Timothy Baldridge (@timbaldridge) is a developer with Cognitect Inc. He hails from the mountain regions of Denver Colorado (USA). Timothy is a polyglot programmer with experience in Clojure, C#, Python, and Erlang. Most recently he was deeply involved in the development of Clojure's Core.Async library, where he designed, implemented, and maintains the state-machine code rewriting macro known as "go".
The ClojureScript has inspired a revolution in compiler design. The concept of treating Abstract Syntax Trees as nested hash maps was a design decision that started with this compiler and has since spread to almost every compiler in the Clojure ecosystem.
This talk will start with a description of how ASTs are traditionally designed in other languages (C#, Haskell, ML, and Clojure as examples). The problems with these approaches will be discussed. The talk will then describe how the hash map approach used by Clojure enables compiler designers to be more productive. The talk will then end with examples and case studies from ClojureScript, Clojure in Clojure, core.typed and core.async.