A simple "meta-circular scheme" interpreter. * mcs.ss This is a simplified version of the mcscheme interpreter that has the following limitations and additions. (1) I've added begin, which takes an arbitrary number of arguments, evlautes them from left to right and refurns the value of the last one. (2) lambda only allows one expression in its body. If you want to do more things in the body, use an explicit begin, as in (lambda (x) (begin (define y (* x x)) (* y y))) (3) define can only assign a variable to a value, i.e., its first argument has to be a symbol. You can define a function using lambda, as in: (define add1 (lambda (x) (+ x 1)) (4) There is no set! The set function can assign variables outside of the local environment (e.g., global variables). You can use define to either create a new variable in the local environment or to give a local variable a new value. * mcs_basics.ss This file is intended to be loaded and evaluated by the mcs interpreter. It defines some variables and functions that extend mcs and also demonstrate what it can do. * mcs_scope.ss This is the version with a global scheme variable that can switch the interpreter from static to dynamic scoping. * session.txt A session captured with the unix script command that shows mcscheme in action.