A small, simple and incomplete Lisp/Scheme interpreter written in Ruby
Ruby Scheme
Permalink
Failed to load latest commit information.
README.md Update features in README Mar 17, 2015
sceem.rb Do not start REPL when run with file Mar 20, 2015
tests.scm Add procedure definition syntax Mar 17, 2015

README.md

sceem - A small Lisp/Scheme interpreter written in Ruby

Screenshot of sceem REPL

This is a small Scheme interpreter written in Ruby for the fun of it. This is recreational programming.

There are no goals for sceem. This is just programming for the sake of it.

sceem is heavily inspired by the Metacircular Evaluator in SICP and Peter Norvig's lispy.

Features

sceem is already quite powerful.

  • a few primitive procedures
  • definitions
  • if
  • begin
  • cons/car/cdr
  • lambdas (first class lambdas - assign them, pass them, return them, use them anonymously)

To see what's there and already works, open tests.scm.

What's still missing

  • derived expressions (let, cond)
  • list
  • quoting
  • boolean literals
  • a lot of procedures
  • multi-line expression support

Tests

Running the tests (or any other Scheme file) is easy:

./sceem.rb tests.scm

License

Do whatever you want with this!