Lists and Lists

May 15, 2026

lists and lists by andrew plotkin starts in a familiar place. that is, it starts in a room called “a familiar place”. there’s a strange new door in said place; through that door is a study where a genie sleeps. when you wake him up, he gives you a manual for the scheme programming language and a challenge.

the study has a computer. press the run button and you’re dumped into a scheme REPL.

what superluminal vagrant twin did for space sims, lists and lists did for zachtronics games1.

i find this sort of thing delightful. implementing a LISP-like in the z-machine already has a sense of improper hierarchy2 to it, as zork was originally written in MDL, a language in the LISP family. the porting to ZIL / construction of the z-machine then stripped out many of the features you’d need to actually implement a LISP-like. as plotkin said in a post on the topic:

You may know that I wrote a small Lisp interpreter for the Z-machine. It was fun, but the Z-machine gave me no help at all! I had to build the Lisp heap and list data structures myself, out of primitive Z-machine byte arrays. Same with the garbage collector. It’s all terribly inefficient and janky.

so it’s got an air of a silly technical party trick about it, and that kind of thing always brings me joy. more than that, though, it’s genuinely educational. i’ve been working on a library for context free grammars with a very LISP-y syntax, and lists and lists helped me answer some implementation questions i had about it. granted, i could’ve gotten those questions answered a different way… but i didn’t. a victory for edutainment! having a sequence of tasks like this is genuinely pretty effective for learning a programming language, and the manual’s accessible enough.

the interface really works against it, though. the interpreter i use doesn’t support pasting in a multi-line commands, so i’d have to manually remove the newlines from code i was working on in a text document, which was annoying. and then i got errors because my huge function was too long for the interpreter, so i’d have to actually copy everything in line by line… programming games are already a bit of an interface nightmare, since every developer has their own setup, but at least a custom interface would, like… work3.

still, i did complete it, and the reward for doing so was pretty delightful. i’m not about to start using scheme for everything (seriously, how can you cope with balancing all those parentheses?) i appreciated getting to spend some time playing with it. now i just need someone to make this for FORTH…


  1. this is anachronistic. spacechem was released in 2011, a solid fifteen years after lists and lists… but it gets the idea across. ↩︎

  2. https://www.youtube.com/watch?v=ar9WRwCiSr0 ↩︎

  3. guess it captures some of the old punchcards uphill in the snow both ways vibes… ↩︎