Copyright | (c) 2016-2017 Peter Trško |
---|---|
License | BSD3 |
Maintainer | peter.trsko@gmail.com |
Stability | stable |
Portability | GHC specific language extensions. |
Safe Haskell | None |
Language | Haskell2010 |
A class for types with a default value.
Documentation
Default
type class provides a default value (def
) of a type. In
case when a particluar type has an instance for Monoid
,
then the default value should be mempty
, otherwise it can
cause a great deal of confusion.
One must understand, that Default
type class, has no axioms associated
with it. Its purpose is to minimize:
- Number of imports.
- Number of introduced definitions that are part of an API.
- Complexity of building more complicated "default values" out of simpler "default values".
- Cognitive overhead. (Reduction of cognitive overhead is partially a consequence of reducing above issues.)
As one may notice, most of the listed problems, that Default
type
class tries to solve, to various degrees of success, are for human
benefit, and not theoretically founded. Because of this, please always
try hard to define sensible instances of Default
. Most importantly,
document what def
means for particular type, and always check that
def
is sensible, by testing it on a real world sample of human beings,
one is not a big enough sample.
That said, using Default
may not always be a good idea. If it breaks
people's mental models, or theoretical models with real axioms, then just
don't use it.
A class for types with a default value.