This module is a drop in replacement for Data.Maybe. It generalizes
the functions to any types that share the same "sum of products" view
of Maybe.
To use the module for your type, enable GHC's DeriveGeneric extension and
derive a Generic instance for your type.
After which you can use the functions, like your type was Data.Maybe.Maybe