Cosmo
Cosmo
It is more useful than you think: Monoids and all algebraic constructs inherited from it (lattices, bands, groups, ...) are derivable with pair of functions `(A => B, B =>...
The generated functions should still respect the invariant composition law required by the invariant functor: ``` def invariantComposition[A, B, C](fa: F[A], f1: A => B, f2: B => A, g1:...
This is the class called Hoist in scalaz (but with Monad requirement on F). There is also Cohoist with ~the same signature (but asking for Comonad in F). I think...
There is also the cats-tagless direction of higher-kind traits. Both up their kindness towards different shapes. In comparison, along with their semigroupal class (cats-tagless FunctorK versus functork candidate named Hoist):...
In my experience, the cats-tagless encoding have proved more useful because the Hoist functor has to be constrained in the M[_] parameter to be truly useful. And in this encoding...