This week I added continuations to my Lisp. They’re a fascinating feature, and a popular demand in the survey. It has been the most challenging feature so far, both to implement and explain, but the result has been worth it.
I worked on a new feature for my Lisp this week: an explicit stack and stacktraces. Stacktraces make debugging easier by improving error messages. An explicit stack makes them possible, and is necessary to implement continuations later.
To make my Lisp a more useful language, and to pave the road for a module system and package manager, I added the capability of performing IO.
I’m still figuring out the best way to present images on my blog.
Monday’s survey revealed that Reader Macro’s are your most requested feature. They replace built-in syntax, and enable users to extend the syntax from within the language. Implementing them right is difficult, however. Let’s try.
Adapted from FPComplete’s article on coroutines for streaming.
To make debugging easier, I added a simple
pry-style debugger to my lisp. It immediately spawns a new repl in the current envirment, allowing you to poke around at will. Debug repl’s can be nested to arbitrary depth, and exited with
String interpolation is one of my favorite language features. The resulting string is much easier to visualize than with manual concatenation. It’s also straightforward to implement. I thought it would be a nice addition to my Lisp.
I’ve been working on my first general purpose programming language last week, guided by the books SICP and Write Yourself a Scheme in 48 Hours. This has been a goal of mine for a long time, but it somehow always looked intimidating. I was glad to find out that interpreters can actually be astonishingly simple, and would like to share what I learned along the way.