Why I am writing yet another language implementation


Why am I writing a language that compiles to JavaScript when I have over 250 to choose from (https://github.com/jashkenas/coffeescript/wiki/List-of-languages-that-compile-to-JS)? For the same reason as 250 plus other developers – I want something different to what is already out there.

  • Minimalist Syntax and Semantics: To quote Einstein: “Everything should be made as simple as possible, but not simpler.” For this I lean towards the Lisp family where Syntax is all but non-existent. My first thought here was Clojure and ClojureScript.
  • Ability to compile and work in the Browser: So it has to be able to compile to JavaScript on the browser. This lets out ClojureScript as it is compiled on the server.
  • Something to help me learn to understand functional programming: Again ClosureScript comes to mind.
  • A language to work with the examples and problems in SICP (Structure and Interpretation of Computer Programs). SICP was the course-ware book from MIT in the 80’s. It used Scheme – another Lisp dialect.
  • An extensible language to so I can learn about reactive/frp: Again Lisp macros are suitable for this. Sweet.js adds macro capability to JavaScript. Impressive, but it is not minimalist.

I spent quite a while looking through the choices on GitHub. The one that attracted me most was LiScript. At 100 lines it was easy for me to  follow. It provided a lisp-like syntax with macros. It provided direct access to the power of JavaScript. It as close, but not perfect. The macros were too primitive and the translations could be translated into a language feature. Besides, the best way to learn is to do…

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s