Thanks. I've been reading the Hudak paper. Interesting stuff. Maybe a better question would be which of these features, from http://en.wikipedia.org/wiki/Haskell_%28programming_language%29#Features *weren't* present at first launch? ------------ Haskell features lazy evaluation, pattern matching, list comprehensions, typeclasses, and type polymorphism. It is a purely functional language, which means that in general, functions in Haskell do not have side effects. There is a distinct type for representing side effects, orthogonal to the type of functions. A pure function may return a side effect which is subsequently executed, modeling the impure functions of other languages. Haskell has a strong, static type system based on Hindley–Milner type inference. Haskell's principal innovation in this area is to add type classes, which were originally conceived as a principled way to add overloading to the language,[15] but have since found many more uses.[16] The type which represents side effects is an example of a monad. Monads are a general framework which can model different kinds of computation, including error handling, nondeterminism, parsing, and software transactional memory. Monads are defined as ordinary datatypes, but Haskell provides some syntactic sugar for their use. Michael --- On Thu, 1/20/11, Henk-Jan van Tuyl <hjgtuyl@chello.nl> wrote:
|