https://github.com/iwillspeak/formula-one
An Experimental LISP
https://github.com/iwillspeak/formula-one
interpreter lisp lisp-interpreter programming-language
Last synced: 9 months ago
JSON representation
An Experimental LISP
- Host: GitHub
- URL: https://github.com/iwillspeak/formula-one
- Owner: iwillspeak
- Created: 2019-07-07T08:14:28.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2022-07-14T06:47:34.000Z (over 3 years ago)
- Last Synced: 2025-06-19T03:24:28.431Z (9 months ago)
- Topics: interpreter, lisp, lisp-interpreter, programming-language
- Language: Rust
- Homepage: https://willspeak.me/2019/07/10/lisp-in-two-days-with-rust.html
- Size: 20.5 KB
- Stars: 20
- Watchers: 4
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🏎 Formula One - An Experimental LISP 🏎
Formula One is an experiment in ways to ergonomically build syntax trees and transformations in Rust.
```
🏎 > (begin (define foo 1007) (define bar 330) (+ foo bar))
~> 1337
```
## Blog Post
The early development of this language is discussed on my blog in [Lisp in Two Days with Rust][blogpost]
[blogpost]: https://willspeak.me/2019/07/10/lisp-in-two-days-with-rust.html
## Features
The language is a small subset of the LISP described in . Notably it supports the following special forms:
* `(if )` for conditional evaluation of `` or ``
* `(define )` binding a value to a symbol
* `( ...)` for calling a named function ``
All evaluation takes place in a single global environment. The language does not support user-defined functions with `labda` or the nested environments that they would entail. Quoting of values with `'` or `quote` is also not supported. The parser recognises comments and whitespace but is yet to bind them to primary tokens as trivia.
## 🐉 Here be Dragons 🐉
This is only intended as an experiment to develop techniques for building syntax trees in code. It isn't intended as a production use language.