multi-instance alternatives and similar packages
Based on the "Algebra" category.
Alternatively, view multi-instance alternatives based on common mentions on social networks and blogs.
A partial binary associative operator (appendMaybe :: a → a → Maybe a)
A Haskell implementation of Allen's interval algebra
Do you think we are missing an alternative of multi-instance or a related project?
Alternative versions of common typeclasses, augmented with a phantom type
x. The purpose of this is to deal with the case where a type has
more than one candidate instance for the original, unaugmented class.
Example: Integer sum and product
The canonical example of this predicament is selecting the monoid instance for a
type which forms a ring (and thus has at least two strong candidates for
selection as the monoid), such as
Integer. This therefore gives rise to the
Product newtype wrappers, corresponding to the additive and
multiplicative monoids respectively.
fold-based summation of a list of integers looks like this:
>>> import Data.Foldable (fold) >>> import Data.Monoid (Sum (..)) >>> getSum (fold [Sum 2, Sum 3, Sum 5]) :: Integer 10
multi'fold, whose constraint is
Data.Monoid.Monoid, we can write the same thing without the newtype
>>> :set -XFlexibleContexts -XTypeApplications >>> multi'fold @Addition [2, 3, 5] :: Integer 10