On 26-Jan-2003, Norman Ramsey <nr@eecs.harvard.edu> wrote:
In a fit of madness, I have agreed to deliver a 50-minute lecture on type classes to an audience of undergraduate students. These students will have seen some simple typing rules for F2 and will have some exposure to Hindley-Milner type inference in the context of ML.
Will they have had exposure to more "traditional" OO programming? If so, it might be useful to note the difference between Haskell type classes and C++/Java/whatever classes, namely that Haskell decouples types and the interfaces that they support. The advantage is that you can extend a type with a new interface at any point, not just when you define the type.
Hmm --- you are talking about the `instance' declarations, right?
Yes -- the fact that Haskell has separate instance declarations, as opposed to making this information part of the `data' declaration. In most OO languages inheritence relations need to be specified in the type definition. -- Fergus Henderson <fjh@cs.mu.oz.au> | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.