|Version 2 (modified by jmcarthur, 6 years ago)|
These are some tentative goals and guidelines for the project:
- Don't worry about backward compatibility. We should learn from the mistakes of the past, not repeat them!
- Given a choice between either complex types and simple values or simple types and complex values, prefer the former.
- Provide a fine-grained algebra.
- Provide convenient facilities for type composition and generic folds/unfolds.
- Implement a declarative IO system.
- Don't be afraid to use extensions (although we should probably establish a list of which ones are "safe" and which are not).
- When there is more than one possible instance of a type class for one data type, use newtype wrappers for all of those instances (no instance for the unwrapped version).
- Don't worry about numerous type classes as long as they are small.