A small, simple and incomplete Lisp/Scheme interpreter written in Ruby
Ruby Scheme
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
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


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.


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


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

./sceem.rb tests.scm


Do whatever you want with this!