Monoid in is a data type with a lawful Monoid instance, that is:
class Semigroup a => Monoid a where mempty :: a mappend :: a -> a -> a mappend = (<>)
Monoids are data types that can be instantiated empty and be smashed together without losing any information. A common example is and
[a] (for any
mappend=(++). Monoids are always s as well.