[web-devel] richer client experiences

Greg Weber greg at gregweber.info
Wed Jan 26 17:07:12 CET 2011

Thanks for the great extra info on JMacro. I think haskellers would enjoy
hearing about it and how you use it as a blog post.

Hi! Author of JMacro here. You're right that JMacro has a few less

features than CoffeeScript. In particular, it lacks pattern matching.

Outside of that, however, most CoffeeScript features are to make

CoffeeScript more rubylike in syntax. Haskell-style anonymous lambdas

coupled with whitespace function application on their own, however,

suffice to allow exceedingly Haskell/ML-like code. JMacro can be used

as a nicer syntax for JavaScript, but the big win is that it is a

better way to *generate* JavaScript -- in particular via hygiene and a

shared namespace with surrounding Haskell code. So bear in mind also

that JMacro syntax is infinitely-extensible in the sense that you can

not only write JavaScript combinators in JMacro, but Haskell

combinators which produce JMacro that can be spliced directly back

into a block of code. Jeff and I have, for instance, written a tiny

set of infix combinators for chaining jQuery selectors.

coffee-script isn't designed to give javascript a ruby-like syntax. It is
designed to add useful language level features and get rid of superfluous
syntax, which Ruby and haskell also try to do. Maintaining a certain amount
of javascript compatibility makes it look more like Ruby and less like
Haskell. But there are definitely influences from other languages. For
example, it uses layout syntax instead of an 'end' keyword (or brackets) in
ruby. You can use groovy's existential operator.

More information about the web-devel mailing list