Mihai Bazon, author of UglifyJS, writes about Lisp, language implementation in JavaScript, and his Slip Lisp system.
HN commenters recommend his tutorial on implementing a programming language in JavaScript, and note he is a Lisp enthusiast whose blog runs on Common Lisp.
I just want to note that the new CoffeeScript compiler is using ESCodeGen as a backend, which is doing the source map heavy lifting. Anyone writing a compiler which targets JS can use ESCodeGen as a backend and get source maps pretty much for free. Awesome news all around!
https://github.com/Constellation/escodegen
Note: I do not want it to seem like I want to take anything away from Michael Ficarra and the new CoffeeScript compiler. He also wrote the code to integrate source maps with ESCodeGen, but it is something that many projects will be able to take advantage of, not just CoffeeScript.
In other source map news, if anyone hasn't seen it yet, UglifyJS v2 now supports source maps: http://lisperator.net/blog/uglifyjs-v2-news/
Source map support is on the way for Firefox's debugger as well: https://bugzilla.mozilla.org/show_bug.cgi?id=771597
That was a super interesting link, thank you.
For the ontological problem, I presume you're referring to how there are so many differing ideas of how to represent ASTs (apologies for mixing languages, these URLs were just handy):
* https://lisperator.net/uglifyjs/ast#nodes
* https://github.com/estree/estree#the-estree-spec
* ... likely others
which makes it hard for ls1 to ask ls2 about "the for-of iteration variable Node" because ls2 could be using UglifyJS or ESTree or their own(!) AST nomenclature?
And all of this is made worse by (e.g.) Java1.3 versus Java19 because languages are rarely static
Googling turned up several on just the first page of results:
http://www.biwascheme.org/
http://sisc-scheme.org/sisc-online.php
http://lisperator.net/slip/
http://alex.nisnevich.com/ecmachine/
But the parent is really the right answer -- ClojureScript is actually targeted at meeting modern web development challenges and has a thriving ecosystem of powerful tools for the same.
I wrote some time back a tutorial on this: http://lisperator.net/pltut/ — but the implementation language is JS, and the language we implement is quite trivial (no objects, inheritance etc.; but does have lexical scope, first-class functions and continuations).
I think Java is ugly, but putting this knowledge in an accessible book is great. Typography is also very nice.
Mihai Bazon (of uglify.js fame) is also a big time lisper. His entire blog is powered by Common LISP. Check it out. AFAIR, he developed a browser based SLIME environment too
http://lisperator.net/
I like this article:
http://lisperator.net/pltut/
it's in javascript and does a good job at teaching writing interpreters withtout regex tricks. There is even a compiler tutorial at the end.