From: "andrew cooke" <andrew@...>
Date: Sat, 28 Oct 2006 17:16:17 -0300 (CLST)
I enjoyed this talk, but I don't think it went down so well for many in the audience; I also think he ran out of time and the final point (which is very interesting) got kind-of lost. Anyway, it was pretty damn cool to get a basic lesson in logic from the big cheese. Even if it's also frustrating that the kind of thing that took me a fair amount of effort to teach myself is so obvious after just a few minutes of a lecture (how much I must still not know....) The thread of the talk started with Haskell type classes, and then compared those to Java Generics. One difference (apart from the many extensions in Haskell) was that Java's implementation through type erasure is pretty useful - allows separate compilation, backwards and future compatibility, etc. [This is where his time ran out]. The last few slides introduced Links, which is a "full stack" language that includes DB, business and presentation. In other words, one language compiles, depending on the area, into SQL, server code (Haskell?), or Javascript for the client. Which is pretty neat. And which is (I think - this wasn't clear) only possible because it adapts Haskell's type classes so that they can be implemented through erasure (basically by dispatching on the first type, afacit). In other words, while the "upper" language is statically typed, it can compile "down" to a dynamically typed (tagged) core. And so works on Javascript. Which is pretty cool. Andrew
Clarifications on Wadler
From: "andrew cooke" <andrew@...>
Date: Mon, 6 Nov 2006 19:33:58 -0300 (CLST)
The previous post was written in a hurry (everything from OOPSLA was). Some clarification might help: - The slides are at http://homepages.inf.ed.ac.uk/wadler/topics/gj.html#oopsla - He has a book out on Java Generics. - The server level language for Links is Java. There's more info on Links at http://groups.inf.ed.ac.uk/links/ - Erlang is also in the mix (the paper at http://groups.inf.ed.ac.uk/links/papers/links-esop06.pdf mentions sending messages to mailboxes). - As far as I know, Java Generics are equivalent to normal polymorphism in Haskell; Haskell's type classes are similar to the normal class-based method dispatch in Java. At least, that's my understanding. However, the talk says that the focus is on second order quantification in both languages. So I am wrong about something. Perhaps my mistake is in comparing polymorphism to generic types. If you ignore that (apparent) relationship, things make more sense, because type classes are like genrics too - "Ord a" is pretty similar to "SortedSet<a>". Andrew