Free
Combination of a Free applicative functor and Free monad.
API
Free implements Functor, Applicative, ChainRec and Monad specifications.
Functor, Applicative, ChainRec and Monad functions:
- Free.prototype.
map :: Free i a -> (a -> b) -> Free i b
- Free.prototype.
ap :: Free i a -> Free i (a -> b) -> Free i b
- Free.prototype.
chain :: Free i a -> (a -> Free i b) -> Free i b
- Free.
chainRec :: ((a -> c, b -> c, a) -> Free i c, a) -> Free i b
- Free.
of :: a -> Free i a
Free structure functions:
- Free.prototype.
hoist :: Free i a -> (i -> z) -> Free z a
- Free.
liftF :: i -> Free i a
- Free.prototype.
retract :: (ChainRec m, Monad m) => Free m a -> TypeRep m -> m a
- Free.prototype.
graft :: Free i a -> (i -> Free z a) -> Free z a
- Free.prototype.
foldMap :: (ChainRec m, Monad m) => Free i a -> (i -> m a) -> TypeRep m -> m a
Free structure function equivalencies:
graft(f) ≡ foldMap(f, Free)
hoist(f) ≡ foldMap(compose(liftF, f), Free)
retract(M) ≡ foldMap(id, M)
foldMap(f, M) ≡ compose(retract(M), hoist(f))
This module was started as port of srijs/haskell-free-concurrent to JavaScript.