iwillspeak / formula-one

An Experimental LISP

Home Page:https://willspeak.me/2019/07/10/lisp-in-two-days-with-rust.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

🏎 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

Features

The language is a small subset of the LISP described in https://norvig.com/lispy.html. Notably it supports the following special forms:

  • (if <cond> <then> <elze>) for conditional evaluation of <then> or <elze>
  • (define <sym> <expr>) binding a value to a symbol
  • (<sym> <args>...) for calling a named function <sym>

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.