
On 2016-10-20 19:41, John Wiegley wrote:
"AM" == Andrew Martin
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 contention.
Wasn't this thread about only pulling in Fix (from the 'free' package), or am I missing something?