@sjakobi: All of Dhall’s operators (except for .
and the proposed ≡
operator for equivalence) form Monoid
s, meaning that they are associative and have some identity element. For each such operator I tried to add the corresponding mconcat
to the Prelude where possible. For example, the mconcat
for the +
operator is Natural/sum
and the mconcat
for #
is List/concat
.
I added Bool/{even,odd}
since they provide the mconcat
for ==
and !=
, respectively. They exist purely for symmetry and are not motivated by a practical use case. When naming them I tried to come up with an intuitive description of what they did. It turns out that the easiest way to reason about their behavior is to think of them in terms of counting either False
s or True
s, respectively, thus the descriptions and names.