Autology: Writing a self-rewriting Lisp (Lambda Days)

christianbryant1 pts1 comments

Functional programming is taking Kraków by storm. Scala, Erlang, Haskell, Elm, Elixir, Lisp and Clojure are scoring points with IT professionals, computer science students and technology geeks.<br>'>

Lambda Days 2025<br>Functional programming is taking Kraków by storm. Scala, Erlang, Haskell, Elm, Elixir, Lisp and Clojure are scoring points with IT professionals, computer science students and technology geeks.<br>'>

PROGRAMME

Speakers

Sponsorship

Venue

Contact

Other events

LAMBDA DAYS 2024

LAMBDA DAYS 2023

LAMBDA DAYS 2022

LAMBDA DAYS 2021

LAMBDA DAYS 2020

LAMBDA DAYS 2019

LAMBDA DAYS 2018

LAMBDA DAYS 2017

LAMBDA DAYS 2016

LAMBDA DAYS 2015

LAMBDA DAYS 2014

CODE SYNC

Dave Kimber

Writing Lisps for `fn` and profit

I've been working almost exclusively in Clojure since I left the world of Java 8 years ago. Since then I've been solving enterprise problems with functional programming in the dynamic and interactive environment afforded by Lisps. I couldn't be happier.

I've worked across many sectors, from banking, energy and transport to film, education and (most recently) organic vegetable farming! It's remarkable how much of the job is the same every time. There's always a legacy system to replace and no one is ever completely happy with how their system sends emails to customers.

In my spare time I like writing tiny Lisps, competing in game jams, and playing DnD with my partner and our friends.

Autology: Writing a self-rewriting Lisp

In Lisp, code is data. In a meta-circular Lisp, the interpreter is written in Lisp, so it too is just data. By granting a Lisp the ability to modify the data of its own interpreter we can create a language that has the ability to dynamically rewrite its own implementation at will, adding or removing language features or even transforming it entirely.

Working in Clojure we'll begin by covering the basics of Lisp interpretation and demonstrate how surprisingly simple a minimal Lisp interpreter can be. We'll then explore the ways that small changes to this interpreter can profoundly affect the language itself.

Finally we'll introduce Autology, a pure functional Lisp with the ability to modify its own interpreter, and the unique and powerful form of dynamic metaprogramming this unlocks.

From modifying argument evaluation to writing a custom debugger, to executing raw inlined C code, the possibilities are deep and far-reaching.

Video

←Back

Contact

Contact Us * Register

lambda days lisp writing interpreter functional

Related Articles