@safareli/free
v1.0.0
Published
Combination of a free applicative functor and free monad
Maintainers
Readme
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.
