Types notoc
- Handle optional values without guessing and without exceptions
- Maintain type invariants in smart constructors
- Validate a value once and once only
- Have type-level proof that a value has been validated with a specific
validator
- Statically guarantee that invalid results are handled
- Track effects in types
- Interleave different types of effects
- Restrict sections of code to a set of effects
- Allow more general abstraction
- Reduce repetition
- Restrict evaluation to a type constructor context
- The type constructor determines the semantics of the evaluation