blob: 9e732a5fff6ada3828ee2b55a56d8c511e208a33 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE OverloadedLists #-}
import Events.Types
import Events.Spec
import Events.Eval
import qualified Data.Yaml as Yaml
import qualified Data.ByteString.Char8 as CBS
import Control.Lens
import Control.Monad
import Control.Monad.Trans
import Data.Aeson.Lens
import Debug.Trace
import Data.Maybe (isJust)
import qualified ListT
import qualified Events.Types.NDT as NDT
main :: IO ()
main = test $ do
n <- lift $ NDT.fromFoldable ([1..] :: [Integer])
-- objOccurs .= (n <= 5)
objOccurs .= (n >= 2)
objPayload ?= [ ("num", Yaml.Number $ fromIntegral n)
]
where
test = CBS.putStr . Yaml.encode <=< evaluate predicate
predicate :: Monad m => Maybe Yaml.Object -> m Bool
predicate Nothing = return True
predicate (Just obj) = return . maybe False (<= 5) . traceShowId $ obj ^. at "num" . asDouble
|