The Optional type overloads as many Haskell literals as possible so
that you do not need to wrap values in Specific. For example, if you
enable the OverloadedStrings extension you can use a naked string
literal instead:
The defaultTo function takes a default value and an Optional
value. If the Optional is Default, it returns the default value;
otherwise, it returns the value contained in the Optional.
The optional function takes a default value, a function, and an
Optional value. If the Optional value is Default, the function returns
the default value. Otherwise, it applies the function to the value inside the
Optional and returns the result.