Description
Barbies with layered clothes.
Description
Data with fields that are multiply covered with functors.
README.md
barbies-layered
This is like barbies but these clothes are layered.
For example when there is a following data type,
data Foo = Foo { foo :: [Int] }
barbies requires a following.
data Foo f = Foo { foo :: f [Int] }
But in case of barbies-layered,
data Foo f = Foo { foo :: f [f Int] }
A typical difference is a type of bmap
.
-- barbies
type FunctorB :: ((k -> Type) -> Type) -> Constraint
class FunctorB b where
bmap :: (forall a. f a -> g a) -> b f -> b g
-- barbies-layered
type FunctorB :: ((Type -> Type) -> Type) -> Constraint
class FunctorB b where
bmap :: (Functor f, Functor g) => (forall a. f a -> g a) -> b f -> b g