A UTF-8 encoded string
Eq a defines equality (==) on
Ord a defines an ordering on
Show a represents a conversion function from
a to a readable string.
Semigroup a represents an associative operation on
This means the following laws must hold:
forall x . append x (append y z) == append (append x y) z
Monoid a represents an semigroup an which has an identity. This means
the following additional laws must hold:
forall x . append x empty == x
forall x . append empty x == x
Appends two strings.