Now that Schemer is available and folks can see what it's all about firsthand, I wanted to share some of the references that I used to make Schemer. Below you'll find various links and a description of how they were used to build Schemer:
Docs: MIT Scheme Documentation
This helped me re-learn some of the Scheme fundamentals. The MIT Scheme documentation is well organized, well written, and has many examples (useful for testing). I always came back to these docs when I needed additional clarification on how something was suppose to work.
Getting Started: (How to write a (Lisp) interpreter (in Python))
Don't let the title fool you, the article is actually about building a Scheme interpreter in Python (remember Scheme is a dialect of Lisp). Hopefully, the Python syntax does not scare you away because the article does a really good job of taking you step-by-step through building a simplified Scheme interpreter. By the end of it, you'll have a grasp of what is necessary to tokenize, parse, and evaluate a Scheme expression and you should be able to apply that knowledge to the language of your choosing. The article also provides many documentation links and interesting examples that you can use for testing your interpreter.
Testing: BiwaScheme Interpreter
In addition to testing the interpreter with examples from the previous links, it was also helpful to have a working Schemer interpreter to test against as well. The online BiwaScheme Interpreter was a good tool for testing various Scheme expressions and comparing the results versus my own interpreter.
Mac OS Terminal Customization: Build your own Command Line with ANSI escape codes
By default, Windows Command Prompt applications allow you to use the left and right arrow keys to move the cursor, you can insert characters by typing after you've moved the cursor, you can use backspace to delete characters, and the up and down arrow keys navigate through command history. By default, Mac OS Terminal applications do not have any of the aforementioned features -- you have to implement all of them yourself. The link describes how to use ANSI escape codes in Python to colorize your terminal as well as how to detect the left, right, and backspace keys in order to support inserting characters and deleting characters. The article also describes how to detect the up and down arrow key so that you can also implement command history. Although Python is used in the article, the particular ANSI escape codes and programming approaches can be applied to other languages as well.
So those are the main references I used to build Schemer. I know it may not seem like a lot, but Scheme is a pretty small language so it doesn't take much to get something going. I hope this might encourage some curious programmers out there to make their own Schemer. Please leave a comment if you have any questions. Till next time.
Leave a comment
Log in with itch.io to leave a comment.