Adding Fixed Point Data Types to base

John Wiegley johnw at
Thu Oct 20 17:41:12 UTC 2016

>>>>> "AM" == Andrew Martin <andrew.thaddeus at> writes:

AM> Is there some kind of general rule for when base should absorb things. In
AM> the last several years, it's pulled in Data.Functor.Identity,
AM> Data.Functor.Compose, Eq1, Ord1, Bifunctor. Is there any kind set of
AM> criteria these had to meet to be pulled in?

A principle I've inferred is that it goes into base if (a) it's foundational,
and (b) there's really just one way to express the principle, rather than
multiple ways with inherent trade-offs between them.

For example, Free is known to have significant costs, which are ameliorated
(though made worse in the other direction) by its tagless encoding. Since the
two representations are isomorphic, it becomes strange for base to canonize
one over the other; but with Data.Functor.Identity, there is no such

John Wiegley                  GPG fingerprint = 4710 CF98 AF9B 327B B80F                          60E1 46C4 BD1A 7AC1 4BA2

More information about the Libraries mailing list