The major use of
These of this is provided by the
align member of
Semialign class, representing a generalized notion of "zipping with padding"
that combines structures without truncating to the size of the smaller input.
It turns out that
zip operation fits well the
forming lattice-like structure.
- Rename old
- i.e. current main hierarchy is
instance Functor f => Semialign f where alignWith :: (These a b -> c) -> f a -> f b -> f c instance Semialign f => Align f where nil :: f a instance Semialign f => Zip f where zipWith :: (a -> b -> c) -> f a -> f b -> f c instance Zip f => Repeat f where repeat :: a -> f a
This biased choice, that
Semialign is a super-class of
Zip is motivated by the fact that
- There’s no
Semialign-like class anywhere else, yet
Applicativewith slightly more laws. I If you need only
Repeatclass, and your type isn’t
Alingable, maybe using
Split out of