newtype Mu f
Mu f is the least fixed point of a functor
f, when it exists.
Newtype (Mu f) _
(Eq1 f) => Eq (Mu f)
Eq, we require
fto have higher-kinded equality.
(Eq1 f, Ord1 f) => Ord (Mu f)
Ord, we require
fto have higher-kinded comparison.
(Show (f TacitString), Functor f) => Show (Mu f)
Showis compositional, so we only
fto be able to show a single layer of structure.
(Alt f) => Semigroup (Mu f)
(Plus f) => Monoid (Mu f)