Types that are parametric on unary type-constructors that control
their shapes are like Barbies that can wear different clothes
to become a different doll. This is a common Haskell-idiom. E.g.,
data Barbie f
= Barbie
{ name :: f String
, age :: f Int
}
b1 :: Barbie Last -- Barbie with a monoid structure
b2 :: Barbie (Const a) -- container Barbie
b3 :: Barbie Identity -- Barbie's new clothes
This package provides basic classes and abstractions to work with these types and easily transform them.
Changes
Changelog for barbies
0.1.4.0
Add btraverse_
Add the trivial Void and Unit barbies
0.1.3.1
Fix issue on Barbie-types with strictness annotations.
0.1.3.0
Use both Monoid and Semigroup as constraints for the Monoid instance,
so that this works with ghc 8.0 to 8.4 (Fraser Murray)
0.1.2.0
Use Monoid and not Semigroup as constraints for the Monoid instance
0.1.1.0
Add instance Semigroup (Barbie b) to go along the Monoid instance
0.1.0.1
Works under GHC 8.0.2, but notice one needs to use empty instance
declarations, because ghc chokes on deriving clauses.