Theta
Theta is a Lisp interpreter for Ruby (though it's really just a small subset of Lisp it interprets). It was heavily influenced by lis.py and flea. It was primarily made as a learning exercise.
How to use
Theta is distributed as a gem, so install by typing:
% gem install theta
After installation, simply type theta to get to the interactive interpreter prompt.
% theta
theta> (define a 2)
theta> (+ a 3)
5
theta> (define square (lambda (x) (* x x)))
theta> (square 3)
9
To exit, simply type 'exit' at the prompt.
Or, you can use the -f command line parameter to evaluate a file.
% theta -f test.scm
Alternately, you can use the -c parameter and pass in code directly.
% theta -c "(+ 3 2)"
And finally, you can use Theta inside your own Ruby programs, if that sounds like something you'd do.
require 'rubygems'
require 'theta'
t = Theta::Interpreter.new
t.run "(define n 15)"
puts t.run "(+ 10 n)"
Syntax
Theta uses a very simplified Lisp-like syntax.
Math
Theta has your basic mathematical functions.
theta> (+ 2 2)
4
theta> (- 3 2)
1
theta> (* 4 2)
8
theta> (/ 4 2)
2
Defining Functions and Variables
You also have the basic variable definition stuff.
theta> (define a 2)
theta> (+ a 3)
5
And functions.
theta> (define square (lambda (x) (* x x)))
theta> (square 3)
9
Conditionals and Truthiness
We have your basic if statement that will evaluate the first piece of code if true, otherwise the second (if you give it one).
theta> (if (= 2 2) (display "true") (display "not true"))
true
theta> (if (= 1 2) (display "true") (display "not true"))
not true
And some basic Boolean statements.
theta> (= 2 2)
true
theta> (> 1 2)
false
theta> (< 2 3)
true
theta> (>= 3 3 2)
true
theta> (<= 4 5 2)
false
Input and Output
Theta also has basic input and output.
theta> (display "poop")
poop
theta> (define a (input))
hi <this is user input>
theta> (display a)
hi
And a function to turn user input into an integer.
theta> (define a (string-to-num (input)))
123 <this is user input>
theta>(+ a 3)
126