Safe Haskell | None |
---|---|
Language | Haskell2010 |
The enviroment for Eff
.
This module is intended for internal use only, and may change without warning in subsequent releases.
Synopsis
- data Env (es :: [Effect])
- emptyEnv :: IO (Env '[])
- cloneEnv :: Env es -> IO (Env es)
- sizeEnv :: Env es -> IO Int
- takeLastEnv :: HasCallStack => Int -> Env es0 -> IO (Env es)
- getEnv :: forall e es. (HasCallStack, e :> es) => Env es -> IO e
- checkSizeEnv :: HasCallStack => Int -> Env es -> IO ()
- unsafeReplaceEnv :: HasCallStack => Env es -> Env es -> IO ()
- unsafeConsEnv :: HasCallStack => e -> Env es -> IO (Env (e ': es))
- unsafeAppendEnv :: HasCallStack => Env es0 -> Env es1 -> IO (Env es)
- unsafeTrimEnv :: HasCallStack => Int -> Env es -> IO (Env es0)
- unsafePutEnv :: forall e es. (HasCallStack, e :> es) => e -> Env es -> IO ()
- unsafeModifyEnv :: forall e es. (HasCallStack, e :> es) => (e -> e) -> Env es -> IO ()
- unsafeStateEnv :: forall e es a. (HasCallStack, e :> es) => (e -> (a, e)) -> Env es -> IO a
Documentation
Safe operations
takeLastEnv :: HasCallStack => Int -> Env es0 -> IO (Env es) Source #
Take last k
values from the top of the environment.
getEnv :: forall e es. (HasCallStack, e :> es) => Env es -> IO e Source #
Extract a specific data type from the environment.
checkSizeEnv :: HasCallStack => Int -> Env es -> IO () Source #
Check that the size of the environment is the same as the expected value.
Extending and shrinking
unsafeReplaceEnv :: HasCallStack => Env es -> Env es -> IO () Source #
Replace the first argument with the second one in place.
unsafeConsEnv :: HasCallStack => e -> Env es -> IO (Env (e ': es)) Source #
Extend the environment with a new data type in place.
unsafeAppendEnv :: HasCallStack => Env es0 -> Env es1 -> IO (Env es) Source #
Extend the first environment with the second one in place.
unsafeTrimEnv :: HasCallStack => Int -> Env es -> IO (Env es0) Source #
Trim the environment to the given size in place.
Data retrieval and update
unsafePutEnv :: forall e es. (HasCallStack, e :> es) => e -> Env es -> IO () Source #
Replace the data type in the environment with a new value in place.
unsafeModifyEnv :: forall e es. (HasCallStack, e :> es) => (e -> e) -> Env es -> IO () Source #
Modify the data type in the environment in place.
unsafeStateEnv :: forall e es a. (HasCallStack, e :> es) => (e -> (a, e)) -> Env es -> IO a Source #
Modify the data type in the enviroment in place and return a value.