- non-strict semantics by default (lazy if easy enough to do)
- strict semantics on demand
- strong typing
- garbage collection
- support for object-orientation
- tail-call optimization
- implicit currying (incl constructors)
- support for second-order functions like foldr
- syntactic sugar for lists
- good record facility
- algebraic datatypes
- type classes (Haskell)
- type classes as types
- type parameters (ML or Haskell)
- monadic I/O (etc)
- dataflow variables (Oz)
- pattern matching
- exceptions
- no need to port the darn thing
- HUGE library support built in
The one thing I haven't really figured out is the record support. This's the fly in the oitment, and also the sine qua non of the project. Languages like Haskell are very good at the types of programs academics need to write, and hence have pretty darn poor record support, but real-world coding means a strong record system, preferable extensible if not downright object-oriented.
No comments:
Post a Comment