Skip to content

Commit cdbaf6d

Browse files
committed
freeT function
1 parent ca17297 commit cdbaf6d

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

docs/Control/Monad/Free/Trans.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ instance monadTransFreeT :: (Functor f) => MonadTrans (FreeT f)
2121
instance monadRecFreeT :: (Functor f, Monad m) => MonadRec (FreeT f m)
2222
```
2323

24+
#### `freeT`
25+
26+
``` purescript
27+
freeT :: forall f m a. (Unit -> m (Either a (f (FreeT f m a)))) -> FreeT f m a
28+
```
29+
30+
Construct a computation of type `FreeT`.
31+
2432
#### `resume`
2533

2634
``` purescript

src/Control/Monad/Free/Trans.purs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
module Control.Monad.Free.Trans
44
( FreeT()
5+
, freeT
56
, liftFreeT
67
, hoistFreeT
78
, interpret
@@ -33,6 +34,10 @@ bound m f = Bind (mkExists (Bound m f))
3334
-- | The free monad transformer for the functor `f`.
3435
data FreeT f m a = FreeT (Unit -> m (Either a (f (FreeT f m a)))) | Bind (Exists (Bound f m a))
3536

37+
-- | Construct a computation of type `FreeT`.
38+
freeT :: forall f m a. (Unit -> m (Either a (f (FreeT f m a)))) -> FreeT f m a
39+
freeT = FreeT
40+
3641
-- | Unpack `FreeT`, exposing the first step of the computation.
3742
resume :: forall f m a. (Functor f, MonadRec m) => FreeT f m a -> m (Either a (f (FreeT f m a)))
3843
resume = tailRecM go

0 commit comments

Comments
 (0)