Many of the functions below have types reflecting the fact that the maps are total
(e.g., find
does not return an option). The fact that they won't raise exceptions
relies on the enumeration passed to Make
being complete.
The only reason that the Applicative interface isn't included here is that we don't
have an Applicative.S3
.