Default declarations

Default declarations come in two distinct forms. They share the keyword default and they both affect instances for type classes, but otherwise they serve quite different purposes.