@@ -4,22 +4,34 @@
4-- This module is intended for internal use only, and may change without warning
4-- This module is intended for internal use only, and may change without warning
5-- in subsequent releases.
5-- in subsequent releases.
6module Effectful.Internal.Env
6module Effectful.Internal.Env
7+ ( -- * The environment
8 , Relinker(..)
20 , Relinker(..)
9 , noRelinker
21 , noRelinker
11− -- * Operations
23+ -- * Operations
12 , emptyEnv
24 , emptyEnv
13 , cloneEnv
25 , cloneEnv
16 , checkSizeEnv
28 , checkSizeEnv
18− -- ** Extending and shrinking
30+ -- ** Extending and shrinking
19 , unsafeConsEnv
31 , unsafeConsEnv
20 , unsafeTailEnv
32 , unsafeTailEnv
22− -- ** Data retrieval and update
34+ -- ** Data retrieval and update
25 , stateEnv
37 , stateEnv
@@ -116,6 +128,7 @@ data Env (es :: [Effect]) = Env
116-- | Local forks of the environment.
128-- | Local forks of the environment.
117data Forks = Forks !ForkId !Int !(IORef EnvRef) Forks | NoFork
129data Forks = Forks !ForkId !Int !(IORef EnvRef) Forks | NoFork
131+-- | Data held in the environment.
119data EnvRef = EnvRef
132data EnvRef = EnvRef
120 { _size :: !Int
133 { _size :: !Int
121 , _data :: !(SmallMutableArray RealWorld Any)
134 , _data :: !(SmallMutableArray RealWorld Any)
@@ -125,6 +138,7 @@ data EnvRef = EnvRef
125----------------------------------------
138----------------------------------------
141+-- | Internal id of the fork.
128newtype ForkId = ForkId { unForkId :: Int }
142newtype ForkId = ForkId { unForkId :: Int }
130-- | 'ForkId' generation.
144-- | 'ForkId' generation.