Brian Alliet This is the implementation of my language. It has the following grammar constant : number | "string" [expr1,expr2,..] expression : (ident | constant | \ident -> expression % lambda | expression expression % application | (expression) % grouping | "if" expression "then" expression "else" expression % let binding | "let" "{" (ident "=" expression ";")* "in" expression There are many builtin functions (these aren't shown in the grammar). + - * / % negate Arithmatic functions true false newline unit Some constants cons isnull head tail List functions pair fst snd Pair functions == ==c Comparison functions show Value -> String return bind IO Monad fuctions get-char put-char new-io-ref read-io-ref write-io-ref The language is a lazy purley function language. There are no side effects however the IO monad allows actions with side effects to be represented in a pure way. Run it like this: ,load syntax.scm ,load match.scm ,load prelude.scm ,load hw8.scm (runfile "hw8.txt") -Brian