Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
This module is a glorified wrapper over lookup
. It
let you define computations in an applicative way that "require" some
optional values, defined by an identifier.
Once defined, it is possible to extract the list of identifiers, and also to evaluate the computation.
let computation = ( (+) <$> require "a" <*> require "b" ) > computeRequire M.empty computation :: Maybe Int Nothing > computeRequire (M.fromList [("a", 12), ("b", 15)]) computation :: Maybe Int Just 27 > computeRequire (M.fromList [("a", 12), ("c", 15)]) computation :: Maybe Int Nothing
- data Require identifier content a
- require :: Eq identifier => identifier -> Require identifier content content
- requireFilter :: (identifier -> Bool) -> Require identifier content (identifier, content)
- computeRequire :: (Ord identifier, Eq identifier, Applicative f, Alternative f) => [(identifier, content)] -> Require identifier content a -> f a
- isComputable :: (Ord identifier, Eq identifier) => Set identifier -> Require identifier content a -> Bool
- triggersAnalyzer :: identifier -> Require identifier content a -> Bool
Documentation
data Require identifier content a Source #
The main data type, used to model a computation that requires a list of named parameters (the "identifier"), that are linked to a "content", and that will yield a result of type "a".
require :: Eq identifier => identifier -> Require identifier content content Source #
This operator let you "require" a value in a computation.
requireFilter :: (identifier -> Bool) -> Require identifier content (identifier, content) Source #
computeRequire :: (Ord identifier, Eq identifier, Applicative f, Alternative f) => [(identifier, content)] -> Require identifier content a -> f a Source #
Evaluate a computation, given a map of key/values for possible parameters.
isComputable :: (Ord identifier, Eq identifier) => Set identifier -> Require identifier content a -> Bool Source #
Checks if a computation can be completed given a set of known identifiers.
triggersAnalyzer :: identifier -> Require identifier content a -> Bool Source #