purescript-free
purescript-free copied to clipboard
Free monads, Cofree comonads, Yoneda and Coyoneda functors, and the Trampoline monad.
``` data Free f a = Free (FreeView f Val Val) (CatList (ExpF f)) ``` `a` is never used in the implementation of `Free` so it gets inferred as phantom...
For instance, [Haskell has](https://hackage.haskell.org/package/free-5.1.2/docs/src/Control.Monad.Free.html#line-161) `Show1 f => Show1 (Free f)` and `(Show1 f, Show a) => Show (Free f a)` and [similarly](https://hackage.haskell.org/package/free-5.1.2/docs/src/Control.Comonad.Cofree.html#line-206) for `Cofree`. The implementation depends on my [other...
Sorry if I'm totally out of my depth here when i suggest using spago for this project. It would make it easier for people like me that are quite unexperienced...
Right now only a few operations (such as ``) are pushed through the trampoline, the remainder are executed on the stack which will mean the cofree data structures must be...
I worked out a way to compose cofree comonads: http://try.purescript.org/?gist=b31f48d16ad43cec8c0afcd470ac5add there is the function: ``` compose :: forall f g a b . Functor f => Functor g => Cofree...
These were disabled in #106. Specifically, [these commits](https://github.com/purescript/purescript-free/pull/106/commits/41710742acc2436af298c68c94e85b20482102b6)
**Description of the change** Recast cofree is useful in cases where one wants to change the functor of a `Cofree` but the natural transformation `f ~> g` required in `hoistCofree`...