Scheme Programming Lessons from Tarot
This page is for documenting things learned from implementing tarot, a basic self hosted scheme compiler that I did.
Table of contents
- sequences - constructing complicated lists efficiently.
- accessors - breaking apart data structures in a simple way.
- stacks and queues - hammer and screwdriver, for programming.
- syntactic extension - making things easy with macros!
- qcode - some low level details about the compiler target and virtual machine.
- eval and macros - how we implement an efficient eval, and how is it used to implement macros.
- pointer tagging and data representation - how is data represented and processed in the runtime.
-
information for stack traces and profiling - how we print useful stack traces, and profiling info.
- bootstrappable release - tarot is released! and it is bootstrappable from sources.
Compiler Passes
- desugar
- hoist
- denest
- tmp-alloc
- flatten & assemble
Blogging
- scheme-continuations my opinion about first class continuations.
- scheme-parse some work on parsing s-expressions.
- scheme-10 single_cream interpreter
- closure-conversion.rkt closure conversion distilled.
- serialize.rkt extending the above to support serializable closures