blob: a76352485ca2aa826ad6e1a6c29ae5443e16ff5e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import System.Exit
import Compiler
import Optimiser
import Parser
import VM
main :: IO ()
main = do
-- let Right p = parseProgram "(print (lambda (n) ((lambda (helper) (if (<= n 0) 0 (if (<= n 2) 1 (helper helper 1 1 (- n 2))))) (lambda (recur a b n) (if (<= n 0) b (recur recur b (+ a b) (- n 1)))))))"
-- let Right p = parseProgram "(print ((lambda (n) ((lambda (helper) (if (<= n 0) 0 (if (<= n 2) 1 (helper helper 1 1 (- n 2))))) (lambda (recur a b n) (if (<= n 0) b (recur recur b (+ a b) (- n 1)))))) 6))"
let Right p = parseProgram "(do (define f (lambda (n) (+ n 1))) (print (f 10)))"
prog <- either die return (compileProgram p)
let opt = optimise prog
print opt
vmRun opt
|