aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md28
-rw-r--r--dorotya.jpgbin0 -> 7779460 bytes
2 files changed, 19 insertions, 9 deletions
diff --git a/README.md b/README.md
index 14a6f09..d9cb4bf 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Cute Scheme
+# Chromatopelma scheme compiler
## Background
@@ -15,22 +15,32 @@ self-hosting scheme compiler targeting a minimal bytecode.
## Objective
-Cute scheme is a partial r7rs implementation with a focus on ease of
-implementation and a reusable library. The frontend is written in r7rs
-Scheme, and compiles to a minimal bytecode.
+Chromatopelma scheme is a partial r7rs implementation with a focus on
+ease of implementation and a reusable library. The frontend is written
+in r7rs Scheme, and compiles to a minimal bytecode.
## Detailed design
-The cute scheme compiler (like most compilers) consists of a number of
-phases that gradually transform a program from scheme code through
-numerous intermediate representations. The csc compiler has 3 such
-intermediate representations, not counting bytecode itself. These two
+I started this project as a way to get familiar with writing a compiler
+for a functional language. My goal was to write a self-hosting compiler,
+and my candidate languages were SML or scheme. I picked scheme because
+of my love for parentheses, but at times I'm missing static typing.
+
+![Dorotya, the real-life Chromatopelma cyaneopubescens.](dorotya.jpg)
+
+Chromatopelma cyaneopubescens is a kind of tarantula native to
+Venezuela. Fig. 1 shows Dorotya going after a roach.
+
+The Chromatopelma scheme compiler (like most compilers) consists of a
+number of phases that gradually transform a program from scheme code
+through numerous intermediate representations. The csc compiler has 3
+such intermediate representations, not counting bytecode itself. These
languages are creatively called IR1, IR2, and IR3.
![Code generation goes through several intermediate phases, named IR1,
IR2, and IR3.](design.svg)
-Fig. 1 shows the phases of code generation. Code generation goes through
+Fig. 2 shows the phases of code generation. Code generation goes through
several intermediate phases, named IR1, IR2, and IR3.
### IR1
diff --git a/dorotya.jpg b/dorotya.jpg
new file mode 100644
index 0000000..5d172a6
--- /dev/null
+++ b/dorotya.jpg
Binary files differ