assoc provides Bifunctor p => Swap p and Assoc p type-classes.
Currently assoc depends on bifunctors to provide instances for Flip, Biff etc types defined in bifunctors.
But now we have a light compatibility package bifunctor-classes-compat.
So I propose a following dependency rearrangement:
assoc depends on bifunctor-classes-compat and provides type-classes and instances for things in base
bifunctors depends on assoc to provide Swap and Assoc instances for extra bifunctors defined here
e.g. lens is not really affected, as it still depends on both assoc and bifunctors. lens defines Wrapped instance for Biff, Clown ... etc, otherwise it could drop (at least direct) bifunctors dependency as well)
but e.g. these could drop bifunctors dependency as it only needs Bifunctor type-class and type-classes defined in assoc package.
This will be breaking change in assoc but only a minor change in bifunctors.
assoc
providesBifunctor p => Swap p
andAssoc p
type-classes.Currently
assoc
depends onbifunctors
to provide instances forFlip
,Biff
etc types defined inbifunctors
.But now we have a light compatibility package
bifunctor-classes-compat
.So I propose a following dependency rearrangement:
assoc
depends onbifunctor-classes-compat
and provides type-classes and instances for things inbase
bifunctors
depends onassoc
to provideSwap
andAssoc
instances for extra bifunctors defined herelens
is not really affected, as it still depends on bothassoc
andbifunctors
.lens
definesWrapped
instance forBiff
,Clown
... etc, otherwise it could drop (at least direct)bifunctors
dependency as well)these
could dropbifunctors
dependency as it only needsBifunctor
type-class and type-classes defined inassoc
package.This will be breaking change in
assoc
but only a minor change inbifunctors
.How does this sound?