Safe Haskell | None |
---|
Trees of predicates.
Exports names which conflict with Prelude names, so you probably want to import this module qualified.
- data Pdct a = Pdct Label (Node a)
- always :: Pdct a
- never :: Pdct a
- and :: [Pdct a] -> Pdct a
- or :: [Pdct a] -> Pdct a
- not :: Pdct a -> Pdct a
- operand :: Text -> (a -> Bool) -> Pdct a
- neverFalse :: Pdct a -> Pdct a
- neverTrue :: Pdct a -> Pdct a
- (&&&) :: Pdct a -> Pdct a -> Pdct a
- (|||) :: Pdct a -> Pdct a -> Pdct a
- type Level = Int
- type IndentAmt = Int
- type ShowDiscards = Bool
- showPdct :: IndentAmt -> Level -> Pdct a -> [Chunk]
- rename :: (Text -> Text) -> Pdct a -> Pdct a
- eval :: Pdct a -> a -> Maybe Bool
- evaluate :: IndentAmt -> ShowDiscards -> a -> Level -> Pdct a -> (Maybe Bool, [Chunk])
- boxPdct :: (b -> a) -> Pdct a -> Pdct b
- boxNode :: (b -> a) -> Node a -> Node b
Documentation
operand :: Text -> (a -> Bool) -> Pdct aSource
Creates a new operand. The Pdct is Just True or Just False, never Nothing.
neverFalse :: Pdct a -> Pdct aSource
Turns an existing Pdct to one that never says False. If the underlying predicate returns Just True, the new Pdct also returns Just True. Otherwise, the Pdct returns Nothing. Has no effect on non-Operand Pdct.
neverTrue :: Pdct a -> Pdct aSource
Turns an existing Pdct to one that never says True. If the underlying predicate returns Just False, the new Pdct also returns Just False. Otherwise, the Pdct returns Nothing. Has no effect on non-Operand Pdct.
type ShowDiscards = BoolSource
rename :: (Text -> Text) -> Pdct a -> Pdct aSource
Renames the top level of the Pdct. The function you pass will be applied to the old name.
:: IndentAmt | Indent each level by this many spaces. |
-> ShowDiscards | If True, show discarded test results; otherwise, hide them. |
-> a | The subject to evaluate |
-> Level | How many levels deep in the tree we are. Start at level 0. This determines the level of indentation. |
-> Pdct a | |
-> (Maybe Bool, [Chunk]) |
Verbosely evaluates a Pdct.