Safe Haskell | Safe-Inferred |
---|
Derive.Env
Synopsis
- data LookupError
- null :: Environ -> Bool
- from_list :: [(Key, DeriveT.Val)] -> Environ
- to_list :: Environ -> [(Key, DeriveT.Val)]
- delete :: Key -> Environ -> Environ
- is_set :: Key -> Environ -> Bool
- put_val :: Typecheck.ToVal a => Key -> a -> Environ -> Either ValType.Type Environ
- put_val_error :: Typecheck.ToVal a => Key -> a -> Environ -> Either Text Environ
- insert_val :: Typecheck.ToVal a => Key -> a -> Environ -> Environ
- hardcoded_types :: Map Key ValType.Type
- get_val :: Typecheck.Typecheck a => Key -> Environ -> Either LookupError a
- maybe_val :: Typecheck.Typecheck a => Key -> Environ -> Maybe a
- checked_val :: forall a. Typecheck.Typecheck a => Key -> Environ -> Either Text (Maybe a)
- checked_val2 :: Typecheck.Typecheck a => Key -> Environ -> Maybe (Either Text a)
- type Key = Text
- data Environ
- lookup :: Key -> Environ -> Maybe DeriveT.Val
- insert :: Key -> DeriveT.Val -> Environ -> Environ
Documentation
data LookupError Source #
Constructors
NotFound | |
WrongType !ValType.Type |
Instances
Show LookupError Source # | |
Defined in Derive.Env Methods showsPrec :: Int -> LookupError -> ShowS # show :: LookupError -> String # showList :: [LookupError] -> ShowS # |
put_val :: Typecheck.ToVal a => Key -> a -> Environ -> Either ValType.Type Environ Source #
Insert a new val, but return Left if it changes the type of an existing one, so once you put a key of a given type into the environ, it can only ever be overwritten by a Val of the same type. The idea is that being inconsistent with types will just lead to confusion.
DeriveT.VNotGiven
is another special case, it deletes the given key.
put_val_error :: Typecheck.ToVal a => Key -> a -> Environ -> Either Text Environ Source #
Like put_val
, but format the error msg.
insert_val :: Typecheck.ToVal a => Key -> a -> Environ -> Environ Source #
Insert a val without typechecking.
hardcoded_types :: Map Key ValType.Type Source #
If a standard val gets set to the wrong type, it will cause confusing errors later on.
get_val :: Typecheck.Typecheck a => Key -> Environ -> Either LookupError a Source #
maybe_val :: Typecheck.Typecheck a => Key -> Environ -> Maybe a Source #
Like get_val
, except that type errors and not found both turn into
Nothing.
checked_val :: forall a. Typecheck.Typecheck a => Key -> Environ -> Either Text (Maybe a) Source #
Like get_val
but format a WrongType nicely.
checked_val2 :: Typecheck.Typecheck a => Key -> Environ -> Maybe (Either Text a) Source #
Like checked_val
, but juggle the return type around so NotFound is just
Nothing, which is more convenient in some cases.