Skip to content
Branch: master
Clone or download
iwillspeak Update Features
We _do_ recognise comments now. We just don't do anything with them.
Latest commit adac7a9 Jul 11, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Add File Evaluation Jul 10, 2019
src Use Iterators for Builtin Arithmetic Ops Jul 11, 2019
.gitignore Add Skeleton Project Jul 7, 2019
Cargo.lock Add Tokens in AST Module Jul 7, 2019
Cargo.toml Add Tokens in AST Module Jul 7, 2019
README.md

README.md

🏎 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.

You can’t perform that action at this time.