diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2014-07-06 02:06:42 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2014-07-06 02:06:42 -0700 |
commit | 52cbb739921116ece71bbcde1a02bed8cae9c1db (patch) | |
tree | b01c0455c1f6d79da62fc076f15c2abba03e6842 | |
parent | 8fafaf8982e3262409ee87b977ea04034334dd04 (diff) | |
download | mu-52cbb739921116ece71bbcde1a02bed8cae9c1db.tar.gz |
4 - output args now optional
-rw-r--r-- | mu.arc | 29 | ||||
-rw-r--r-- | mu.arc.t | 6 |
2 files changed, 19 insertions, 16 deletions
diff --git a/mu.arc b/mu.arc index 87c69eaf..27b5fd9f 100644 --- a/mu.arc +++ b/mu.arc @@ -12,19 +12,22 @@ (each instr instrs (unless returned ;? (prn instr) - (let (oarg1 <- op arg1 arg2) instr -;? (prn op) - (case op - loadi - (= memory*.oarg1 arg1) - add - (= memory*.oarg1 - (+ memory*.arg1 memory*.arg2)) - return - (set returned) - ; else user-defined function - (run function*.op) - )))) + (let delim (or (pos '<- instr) -1) + (with (oarg (cut instr 0 delim) + op (instr (+ delim 1)) + arg (cut instr (+ delim 2))) +;? (prn op) + (case op + loadi + (= (memory* oarg.0) arg.0) + add + (= (memory* oarg.0) + (+ (memory* arg.0) (memory* arg.1))) + return + (set returned) + ; else user-defined function + (run function*.op) + ))))) ;? (prn "return") ) diff --git a/mu.arc.t b/mu.arc.t index ff63ebdc..fd9c0946 100644 --- a/mu.arc.t +++ b/mu.arc.t @@ -16,7 +16,7 @@ (main (1 <- loadi 1) (2 <- loadi 3) - (_ <- add-fn)))) + (add-fn)))) (run function*!main) ;? (prn memory*) (if (~iso memory* (obj 1 1 2 3 3 4)) @@ -26,12 +26,12 @@ (add-fns '((add-fn (3 <- add 1 2) - (_ <- return) + (return) (4 <- loadi 34)) (main (1 <- loadi 1) (2 <- loadi 3) - (_ <- add-fn)))) + (add-fn)))) (run function*!main) ;? (prn memory*) (if (~iso memory* (obj 1 1 2 3 3 4)) |