Example: a 'Visitor' for HTTP Request Constructors equals, hashCode, toString? Pattern matching syntaxes Accessors (getters) Functional setters ('withers') First class laziness Flavours Optics (functional lenses) Smart constructors Static methods export Updating deeply nested immutable data structure Popular use-case: domain specific languages Catamorphisms Extensible algebraic data types But what

