diff options
Diffstat (limited to 'test.hs')
-rw-r--r-- | test.hs | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -0,0 +1,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 |