Karya, built on Sun Nov 26 01:04:37 PST 2017 (patch 0a920b2bde70c0cbac8ee09d158064798b61bbe5)

Safe HaskellNone

Derive.Env

Contents

Synopsis

basic functions

typechecking

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.

BaseTypes.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.

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.

type Key = Text Source #

Symbols to look up a val in the ValMap.

insert :: Key -> BaseTypes.Val -> Environ -> Environ Source #

Insert a val directly, with no typechecking.