not really known
Go to file
Daniel Gorin 83f4d4195e Replace ProductB with ApplicativeB
In terms of operations, they are isomorphic, but the applicative laws
are more lax, so we can define more lawful instances.

We also remove `ProductBC`, since `bdicts` can just be expressed
in terms of `baddDict` and `bpure`.
2019-10-02 20:59:19 +00:00
src Replace ProductB with ApplicativeB 2019-10-02 20:59:19 +00:00
test Replace ProductB with ApplicativeB 2019-10-02 20:59:19 +00:00
test-legacy Fix warnings on ghc 8.8 2019-09-28 13:14:32 +00:00
.gitignore Add stack.yaml.lock files to gitignore 2019-09-28 11:38:28 +00:00
.travis.yml Make it work with ghc 8.8.x as well 2019-09-25 20:14:48 +00:00
barbies.cabal Replace ProductB with ApplicativeB 2019-10-02 20:59:19 +00:00
ChangeLog.md Replace ProductB with ApplicativeB 2019-10-02 20:59:19 +00:00
LICENSE Initial version 2018-04-29 15:31:56 +00:00
README.md Add build status badge to README 2018-07-01 12:49:57 +00:00
Setup.hs Initial version 2018-04-29 15:31:56 +00:00
stack-ghc-802.yaml Update build matrix 2019-03-31 20:29:13 +00:00
stack-ghc-822.yaml Update build matrix 2019-03-31 20:29:13 +00:00
stack-ghc-844.yaml Update build matrix 2019-03-31 20:29:13 +00:00
stack-ghc-865.yaml CI: Test against ghc 8.6.5 2019-09-25 20:14:48 +00:00
stack-ghc-881.yaml Make it work with ghc 8.8.x as well 2019-09-25 20:14:48 +00:00
stack.yaml Make it work with ghc 8.8.x as well 2019-09-25 20:14:48 +00:00

barbies Build Status

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.