The Tragedy of the Common Lisp, or, Why Large Languages Explode (was: revive let blocks)

Brendan Eich brendan at
Thu Jun 18 16:22:48 UTC 2015

Good points, Mark.

There are two better ways forward that I see:

1. Separate forms and make them compose well. Instead of let (x=y){z} 
and the grammatically unsound let (x=y)x*x from ES4, given let in ES6, 
and do expressions in ES7, declare victory and use `do { let x = y; z }`.

2. Sweet.js (, hygienic macros for JS, with 
syntax-case-strength matching and enforestation magic.

We try to follow (1) in TC39. It is why we didn't rush the ?. 
"null-soaking" operator in. I suspect that (2) deserves a look in about 
a year, but welcome thoughts from Tim Disney et al (@natefaubion 


More information about the es-discuss mailing list