> CoffeeScript’s features are all JavaScript features,
> it’s a simple translation from some shorthand into
> some other shorthand.
This isn't entirely accurate -- in the sense that current CoffeeScript semantics can't be implemented as a series of "find-and-replace" operations into JavaScript. Some of the areas in which the AST transformations become more involved are:
* Converting arbitrary statements into expressions.
* Destructuring assignment, when mixed with splats and soaks.
So there are more advanced macros that are being used. It's not doing much a lisp couldn't do. I mean, look at scribble. It's still racket, even though it has not an s-exp in sight.
Chains of soaked invocations are just a Maybe Monad anyways. It's nothing too out there. You could write them in normal javascript fine.
* Converting arbitrary statements into expressions.
* Destructuring assignment, when mixed with splats and soaks.
* Chains of soaked invocations, like:
* Class bodies as blocks of executable code.