
On 28/09/2009, at 7:38 AM, Peter Verswyvelen wrote:
That's not really true. Just use CAL from the Open Quark framework... It's almost Haskell 98, with some extras, and compiles to fast JVM code.
http://openquark.org/Open_Quark/Welcome.html
They even seem to do all kinds of advanced optimizations - like converting tail calls to loops - to get good Java performance.
And they have a better record system, a graphical environment to learn it, etc.
So I think CAL should be in the list, and since it's basically Haskell...
Liking CAL, I suggested it be included in a comment when the original post was made, but I never made the time to write up a matching set of examples myself. Curt, your first blog post is almost compatible with CAL -- you don't need to use a record type to get named accessors, CAL doesn't support list comprehension syntax, and the isBlank implementation would be different. Obviously the Java interop capabilities of CAL are very different to Haskell (and a bit verbose, though quite extensive). Dispatch comes out more-or-less the same -- although CAL doesn't do equational style function defs or comprehensive pattern matching like Haskell. In CAL I'd write letter_grade something like (untested): letter_grade :: Num a => a -> Maybe Char; letter_grade val = find (\pair -> fst pair $ val) [(> 90, 'A'), ... )] `bind` (\p -> return $ snd p); where bind is >>= Tom