(load "mu.arc") (clear) (add-fns '((test1 ((integer 1) <- loadi 1) ((integer 2) <- loadi 3) ((integer 3) <- add (integer 1) (integer 2))))) (run function*!test1) (if (~iso memory* (obj 1 1 2 3 3 4)) (prn "F - load and add instructions work")) (clear) (add-fns '((add-fn ((integer 3) <- add (integer 1) (integer 2))) (main ((integer 1) <- loadi 1) ((integer 2) <- loadi 3) (add-fn)))) (run function*!main) ;? (prn memory*) (if (~iso memory* (obj 1 1 2 3 3 4)) (prn "F - compound functions work")) (clear) (add-fns '((add-fn ((integer 3) <- add (integer 1) (integer 2)) (reply) ((integer 4) <- loadi 34)) (main ((integer 1) <- loadi 1) ((integer 2) <- loadi 3) (add-fn)))) (run function*!main) ;? (prn memory*) (if (~iso memory* (obj 1 1 2 3 3 4)) (prn "F - early return works")) ;? (quit) (clear) (add-fns '((add-fn ((integer 4) <- read) ((integer 5) <- read) ((integer 3) <- add (integer 4) (integer 5)) (reply) ((integer 4) <- loadi 34)) (main ((integer 1) <- loadi 1) ((integer 2) <- loadi 3) (add-fn (integer 1) (integer 2)) ))) (run function*!main) ;? (prn memory*) (if (~iso memory* (obj 1 1 2 3 3 4 ; add-fn's temporaries 4 1 5 3)) (prn "F - parameterized compound fn")) (clear) (add-fns '((add-fn ((integer 4) <- read) ((integer 5) <- read) ((integer 6) <- add (integer 4) (integer 5)) (reply (integer 6)) ((integer 4) <- loadi 34)) (main ((integer 1) <- loadi 1) ((integer 2) <- loadi 3) ((integer 3) <- add-fn (integer 1) (integer 2))))) (run function*!main) ;? (prn memory*) (if (~iso memory* (obj 1 1 2 3 3 4 ; add-fn's temporaries 4 1 5 3 6 4)) (prn "F - parameterized compound fn with return value")) (clear) (add-fns '((add-fn ((integer 4) <- read) ((integer 5) <- read) ((integer 6) <- add (integer 4) (integer 5)) (reply (integer 6) (integer 5)) ((integer 4) <- loadi 34)) (main ((integer 1) <- loadi 1) ((integer 2) <- loadi 3) ((integer 3) (integer 7) <- add-fn (integer 1) (integer 2))))) (run function*!main) ;? (prn memory*) (if (~iso memory* (obj 1 1 2 3 3 4 7 3 ; add-fn's temporaries 4 1 5 3 6 4)) (prn "F - parameterized compound fn with multiple return values"))