about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--Readme.md4
-rw-r--r--channel.mu6
-rw-r--r--edit.arc.t2
-rw-r--r--edit.mu2
-rw-r--r--factorial.mu4
-rw-r--r--fork.mu4
-rw-r--r--generic.mu8
-rw-r--r--mu.arc6
-rw-r--r--mu.arc.t328
-rw-r--r--tangle.mu4
-rw-r--r--x.mu2
11 files changed, 185 insertions, 185 deletions
diff --git a/Readme.md b/Readme.md
index f371bb9d..29b1a224 100644
--- a/Readme.md
+++ b/Readme.md
@@ -70,7 +70,7 @@ prototype). Then:
 As a sneak peek, here's how you compute factorial in mu:
 
 ```lisp
-  def factorial [
+  function factorial [
     ; allocate some space for local variables
     default-scope/scope-address <- new scope/literal, 30/literal
     ; receive inputs in a queue
@@ -127,7 +127,7 @@ An alternative way to define factorial is by including *labels*, and later
 inserting code at them.
 
 ```lisp
-  def factorial [
+  function factorial [
     default-scope/scope-address <- new scope/literal, 30/literal
     n/integer <- next-input
     {
diff --git a/channel.mu b/channel.mu
index 5eb8849e..fa6d89c3 100644
--- a/channel.mu
+++ b/channel.mu
@@ -1,4 +1,4 @@
-(def producer [
+(function producer [
   ; produce numbers 1 to 5 on a channel
   ((default-scope scope-address) <- new (scope literal) (30 literal))
   ((chan channel-address) <- next-input)
@@ -22,7 +22,7 @@
   }
 ])
 
-(def consumer [
+(function consumer [
   ; consume and print integers from a channel
   ((default-scope scope-address) <- new (scope literal) (30 literal))
   ((chan channel-address) <- next-input)
@@ -39,7 +39,7 @@
   }
 ])
 
-(def main [
+(function main [
   ((chan channel-address) <- new-channel (3 literal))
   ; create two background 'routines' that communicate by a channel
   (fork (consumer fn) (chan channel-address))
diff --git a/edit.arc.t b/edit.arc.t
index aa06bbd9..2ef047a3 100644
--- a/edit.arc.t
+++ b/edit.arc.t
@@ -4,7 +4,7 @@
 (new-trace "new-screen")
 (add-code:readfile "edit.mu")
 (add-code
-  '((def test-new-screen [
+  '((function test-new-screen [
       ((1 screen-address global) <- new-screen (5 literal) (5 literal))
      ])))
 ;? (each stmt function*!new-screen
diff --git a/edit.mu b/edit.mu
index 2f4ff6bf..d4937c60 100644
--- a/edit.mu
+++ b/edit.mu
@@ -1,6 +1,6 @@
 ; a screen is an array of pointers to lines, in turn arrays of characters
 
-(def new-screen [
+(function new-screen [
   ((default-scope scope-address) <- new (scope literal) (30 literal))
   ((nrows integer) <- next-input)
   ((ncols integer) <- next-input)
diff --git a/factorial.mu b/factorial.mu
index d94a9354..707e04f9 100644
--- a/factorial.mu
+++ b/factorial.mu
@@ -1,4 +1,4 @@
-(def factorial [
+(function factorial [
   ((default-scope scope-address) <- new (scope literal) (30 literal))
   ((n integer) <- next-input)
   { begin
@@ -14,7 +14,7 @@
   (reply (result integer))
 ])
 
-(def main [
+(function main [
   ((1 integer) <- factorial (5 literal))
   (print-primitive ("result: " literal))
   (print-primitive (1 integer))
diff --git a/fork.mu b/fork.mu
index 6366a208..3a4c1437 100644
--- a/fork.mu
+++ b/fork.mu
@@ -1,4 +1,4 @@
-(def main [
+(function main [
   (fork (thread2 fn))
   ((default-scope scope-address) <- new (scope literal) (2 literal))
   ((x integer) <- copy (34 literal))
@@ -8,7 +8,7 @@
   }
 ])
 
-(def thread2 [
+(function thread2 [
   ((default-scope scope-address) <- new (scope literal) (2 literal))
   ((y integer) <- copy (35 literal))
   { begin
diff --git a/generic.mu b/generic.mu
index 8b65d109..351d4552 100644
--- a/generic.mu
+++ b/generic.mu
@@ -1,8 +1,8 @@
 ; To demonstrate generic functions, we'll construct a factorial function with
 ; separate base and recursive clauses. Compare factorial.mu.
 
-; def factorial n = n*factorial(n-1)
-(def factorial [
+; factorial n = n*factorial(n-1)
+(function factorial [
   ((default-scope scope-address) <- new (scope literal) (30 literal))
   ((n integer) <- input (0 literal))
   more-clauses
@@ -12,7 +12,7 @@
   (reply (result integer))
 ])
 
-; def factorial 0 = 1
+; factorial 0 = 1
 (after factorial/more-clauses [
   { begin
     ((zero? boolean) <- equal (n integer) (0 literal))
@@ -21,7 +21,7 @@
   }
 ])
 
-(def main [
+(function main [
   ((1 integer) <- factorial (5 literal))
   (print-primitive ("result: " literal))
   (print-primitive (1 integer))
diff --git a/mu.arc b/mu.arc
index 8f59a317..3f7fddbf 100644
--- a/mu.arc
+++ b/mu.arc
@@ -1317,13 +1317,13 @@
 (def add-code (forms)
   (each (op . rest)  forms
     (case op
-      ; syntax: def <name> [ <instructions> ]
+      ; syntax: function <name> [ <instructions> ]
       ; don't apply our lightweight tools just yet
-      def!
+      function!
         (let (name (_make-br-fn body))  rest
           (assert (is 'make-br-fn _make-br-fn))
           (= function*.name body))
-      def
+      function
         (let (name (_make-br-fn body))  rest
           (assert (is 'make-br-fn _make-br-fn))
           (= function*.name (join body function*.name)))
diff --git a/mu.arc.t b/mu.arc.t
index be7eb9ce..df86c2f4 100644
--- a/mu.arc.t
+++ b/mu.arc.t
@@ -151,7 +151,7 @@
 ;? (set dump-trace*)
 (new-trace "literal")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (23 literal))
      ])))
 ;? (set dump-trace*)
@@ -167,7 +167,7 @@
 (reset)
 (new-trace "add")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (1 literal))
       ((2 integer) <- copy (3 literal))
       ((3 integer) <- add (1 integer) (2 integer))
@@ -179,7 +179,7 @@
 (reset)
 (new-trace "add-literal")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- add (2 literal) (3 literal))
      ])))
 (run 'main)
@@ -189,7 +189,7 @@
 (reset)
 (new-trace "sub-literal")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- subtract (1 literal) (3 literal))
      ])))
 (run 'main)
@@ -200,7 +200,7 @@
 (reset)
 (new-trace "mul-literal")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- multiply (2 literal) (3 literal))
      ])))
 (run 'main)
@@ -211,7 +211,7 @@
 (reset)
 (new-trace "div-literal")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- divide (8 literal) (3 literal))
      ])))
 (run 'main)
@@ -222,7 +222,7 @@
 (reset)
 (new-trace "idiv-literal")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) (2 integer) <- divide-with-remainder (23 literal) (6 literal))
      ])))
 (run 'main)
@@ -234,7 +234,7 @@
 (new-trace "dummy-oarg")
 ;? (set dump-trace*)
 (add-code
-  '((def main [
+  '((function main [
       (_ (2 integer) <- divide-with-remainder (23 literal) (6 literal))
      ])))
 (run 'main)
@@ -249,7 +249,7 @@
 (reset)
 (new-trace "and-literal")
 (add-code
-  '((def main [
+  '((function main [
       ((1 boolean) <- and (t literal) (nil literal))
      ])))
 (run 'main)
@@ -262,7 +262,7 @@
 (reset)
 (new-trace "lt-literal")
 (add-code
-  '((def main [
+  '((function main [
       ((1 boolean) <- less-than (4 literal) (3 literal))
      ])))
 (run 'main)
@@ -273,7 +273,7 @@
 (reset)
 (new-trace "le-literal-false")
 (add-code
-  '((def main [
+  '((function main [
       ((1 boolean) <- lesser-or-equal (4 literal) (3 literal))
      ])))
 (run 'main)
@@ -284,7 +284,7 @@
 (reset)
 (new-trace "le-literal-true")
 (add-code
-  '((def main [
+  '((function main [
       ((1 boolean) <- lesser-or-equal (4 literal) (4 literal))
      ])))
 (run 'main)
@@ -295,7 +295,7 @@
 (reset)
 (new-trace "le-literal-true-2")
 (add-code
-  '((def main [
+  '((function main [
       ((1 boolean) <- lesser-or-equal (4 literal) (5 literal))
      ])))
 (run 'main)
@@ -310,7 +310,7 @@
 (reset)
 (new-trace "jump-skip")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (8 literal))
       (jump (1 offset))
       ((2 integer) <- copy (3 literal))  ; should be skipped
@@ -324,7 +324,7 @@
 (reset)
 (new-trace "jump-target")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (8 literal))
       (jump (1 offset))
       ((2 integer) <- copy (3 literal))  ; should be skipped
@@ -340,7 +340,7 @@
 (reset)
 (new-trace "jump-if-skip")
 (add-code
-  '((def main [
+  '((function main [
       ((2 integer) <- copy (1 literal))
       ((1 boolean) <- equal (1 literal) (2 integer))
       (jump-if (1 boolean) (1 offset))
@@ -356,7 +356,7 @@
 (reset)
 (new-trace "jump-if-fallthrough")
 (add-code
-  '((def main [
+  '((function main [
       ((1 boolean) <- equal (1 literal) (2 literal))
       (jump-if (3 boolean) (1 offset))
       ((2 integer) <- copy (3 literal))
@@ -371,7 +371,7 @@
 (reset)
 (new-trace "jump-if-backward")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (2 literal))
       ((2 integer) <- copy (1 literal))
       ; loop
@@ -390,7 +390,7 @@
 (reset)
 (new-trace "jump-label")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (2 literal))
       ((2 integer) <- copy (1 literal))
       loop
@@ -415,7 +415,7 @@
 (reset)
 (new-trace "direct-addressing")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (34 literal))
       ((2 integer) <- copy (1 integer))
      ])))
@@ -432,7 +432,7 @@
 (reset)
 (new-trace "indirect-addressing")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer-address) <- copy (2 literal))  ; unsafe; can't do this in general
       ((2 integer) <- copy (34 literal))
       ((3 integer) <- copy (1 integer-address deref))
@@ -448,7 +448,7 @@
 (reset)
 (new-trace "indirect-addressing-oarg")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer-address) <- copy (2 literal))
       ((2 integer) <- copy (34 literal))
       ((1 integer-address deref) <- add (2 integer) (2 literal))
@@ -483,7 +483,7 @@
 (reset)
 (new-trace "get-record")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (34 literal))
       ((2 boolean) <- copy (nil literal))
       ((3 boolean) <- get (1 integer-boolean-pair) (1 offset))
@@ -498,7 +498,7 @@
 (reset)
 (new-trace "get-indirect")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (34 literal))
       ((2 boolean) <- copy (nil literal))
       ((3 integer-boolean-pair-address) <- copy (1 literal))
@@ -527,7 +527,7 @@
 (reset)
 (new-trace "get-indirect-repeated")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (34 literal))
       ((2 integer) <- copy (35 literal))
       ((3 integer) <- copy (36 literal))
@@ -544,7 +544,7 @@
 (reset)
 (new-trace "get-compound-field")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (34 literal))
       ((2 integer) <- copy (35 literal))
       ((3 integer) <- copy (36 literal))
@@ -558,7 +558,7 @@
 (reset)
 (new-trace "get-address")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (34 literal))
       ((2 boolean) <- copy (t literal))
       ((3 boolean-address) <- get-address (1 integer-boolean-pair) (1 offset))
@@ -571,7 +571,7 @@
 (reset)
 (new-trace "get-address-indirect")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (34 literal))
       ((2 boolean) <- copy (t literal))
       ((3 integer-boolean-pair-address) <- copy (1 literal))
@@ -585,7 +585,7 @@
 (reset)
 (new-trace "index-literal")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (2 literal))
       ((2 integer) <- copy (23 literal))
       ((3 boolean) <- copy (nil literal))
@@ -602,7 +602,7 @@
 (reset)
 (new-trace "index-direct")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (2 literal))
       ((2 integer) <- copy (23 literal))
       ((3 boolean) <- copy (nil literal))
@@ -620,7 +620,7 @@
 (reset)
 (new-trace "index-indirect")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (2 literal))
       ((2 integer) <- copy (23 literal))
       ((3 boolean) <- copy (nil literal))
@@ -641,7 +641,7 @@
 (reset)
 (new-trace "index-indirect-multiple")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (4 literal))
       ((2 integer) <- copy (23 literal))
       ((3 integer) <- copy (24 literal))
@@ -658,7 +658,7 @@
 (reset)
 (new-trace "index-address")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (2 literal))
       ((2 integer) <- copy (23 literal))
       ((3 boolean) <- copy (nil literal))
@@ -675,7 +675,7 @@
 (reset)
 (new-trace "index-address-indirect")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (2 literal))
       ((2 integer) <- copy (23 literal))
       ((3 boolean) <- copy (nil literal))
@@ -695,7 +695,7 @@
 (reset)
 (new-trace "len-array")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (2 literal))
       ((2 integer) <- copy (23 literal))
       ((3 boolean) <- copy (nil literal))
@@ -711,7 +711,7 @@
 (reset)
 (new-trace "len-array-indirect")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (2 literal))
       ((2 integer) <- copy (23 literal))
       ((3 boolean) <- copy (nil literal))
@@ -733,7 +733,7 @@
 (reset)
 (new-trace "sizeof-record")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- sizeof (integer-boolean-pair literal))
      ])))
 (run 'main)
@@ -744,7 +744,7 @@
 (reset)
 (new-trace "sizeof-record-not-len")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- sizeof (integer-point-pair literal))
      ])))
 (run 'main)
@@ -757,7 +757,7 @@
 (reset)
 (new-trace "copy-record")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (34 literal))
       ((2 boolean) <- copy (nil literal))
       ((4 boolean) <- copy (t literal))
@@ -771,7 +771,7 @@
 (reset)
 (new-trace "copy-record2")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (34 literal))
       ((2 integer) <- copy (35 literal))
       ((3 integer) <- copy (36 literal))
@@ -801,7 +801,7 @@
 (new-trace "tagged-value")
 ;? (= dump-trace* (obj blacklist '("sz" "m" "setm" "addr" "cvt0" "cvt1")))
 (add-code
-  '((def main [
+  '((function main [
       ((1 type) <- copy (integer-address literal))
       ((2 integer-address) <- copy (34 literal))  ; pointer to nowhere
       ((3 integer-address) (4 boolean) <- maybe-coerce (1 tagged-value) (integer-address literal))
@@ -820,7 +820,7 @@
 (new-trace "tagged-value-2")
 ;? (set dump-trace*)
 (add-code
-  '((def main [
+  '((function main [
       ((1 type) <- copy (integer-address literal))
       ((2 integer-address) <- copy (34 literal))  ; pointer to nowhere
       ((3 integer-address) (4 boolean) <- maybe-coerce (1 tagged-value) (boolean-address literal))
@@ -833,7 +833,7 @@
 (reset)
 (new-trace "save-type")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer-address) <- copy (34 literal))  ; pointer to nowhere
       ((2 tagged-value) <- save-type (1 integer-address))
      ])))
@@ -845,7 +845,7 @@
 (reset)
 (new-trace "new-tagged-value")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer-address) <- copy (34 literal))  ; pointer to nowhere
       ((2 tagged-value-address) <- new-tagged-value (integer-address literal) (1 integer-address))
       ((3 integer-address) (4 boolean) <- maybe-coerce (2 tagged-value-address deref) (integer-address literal))
@@ -864,7 +864,7 @@
 (new-trace "list")
 ;? (set dump-trace*)
 (add-code
-  '((def main [
+  '((function main [
       ; 1 points at first node: tagged-value (int 34)
       ((1 list-address) <- new (list literal))
       ((2 tagged-value-address) <- list-value-address (1 list-address))
@@ -903,7 +903,7 @@
                 (~is memory*.10 nil))))
       (prn "F - lists can contain elements of different types"))))
 (add-code
-  '((def test2 [
+  '((function test2 [
       ((10 list-address) <- list-next (1 list-address))
      ])))
 (run 'test2)
@@ -917,7 +917,7 @@
 (reset)
 (new-trace "new-list")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- new-list (3 literal) (4 literal) (5 literal))
      ])))
 ;? (= dump-trace* (obj blacklist '("sz" "m" "setm" "addr" "cvt0" "cvt1" "sizeof")))
@@ -947,10 +947,10 @@
 (reset)
 (new-trace "new-fn")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((3 integer) <- add (1 integer) (2 integer))
      ])
-    (def main [
+    (function main [
       ((1 integer) <- copy (1 literal))
       ((2 integer) <- copy (3 literal))
       (test1)
@@ -964,10 +964,10 @@
 (reset)
 (new-trace "new-fn-once")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((1 integer) <- copy (1 literal))
      ])
-    (def main [
+    (function main [
       (test1)
      ])))
 ;? (= dump-trace* (obj whitelist '("run")))
@@ -985,12 +985,12 @@
 (reset)
 (new-trace "new-fn-reply")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((3 integer) <- add (1 integer) (2 integer))
       (reply)
       ((4 integer) <- copy (34 literal))
      ])
-    (def main [
+    (function main [
       ((1 integer) <- copy (1 literal))
       ((2 integer) <- copy (3 literal))
       (test1)
@@ -1004,13 +1004,13 @@
 (reset)
 (new-trace "new-fn-reply-nested")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((3 integer) <- test2)
      ])
-    (def test2 [
+    (function test2 [
       (reply (2 integer))
      ])
-    (def main [
+    (function main [
       ((2 integer) <- copy (34 literal))
       (test1)
      ])))
@@ -1023,12 +1023,12 @@
 (reset)
 (new-trace "new-fn-reply-once")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((3 integer) <- add (1 integer) (2 integer))
       (reply)
       ((4 integer) <- copy (34 literal))
      ])
-    (def main [
+    (function main [
       ((1 integer) <- copy (1 literal))
       ((2 integer) <- copy (3 literal))
       (test1)
@@ -1042,14 +1042,14 @@
 (reset)
 (new-trace "new-fn-arg-sequential")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((4 integer) <- next-input)
       ((5 integer) <- next-input)
       ((3 integer) <- add (4 integer) (5 integer))
       (reply)
       ((4 integer) <- copy (34 literal))
      ])
-    (def main [
+    (function main [
       ((1 integer) <- copy (1 literal))
       ((2 integer) <- copy (3 literal))
       (test1 (1 integer) (2 integer))
@@ -1066,14 +1066,14 @@
 (new-trace "new-fn-arg-random-access")
 ;? (set dump-trace*)
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((5 integer) <- input (1 literal))
       ((4 integer) <- input (0 literal))
       ((3 integer) <- add (4 integer) (5 integer))
       (reply)
       ((4 integer) <- copy (34 literal))  ; should never run
      ])
-    (def main [
+    (function main [
       ((1 integer) <- copy (1 literal))
       ((2 integer) <- copy (3 literal))
       (test1 (1 integer) (2 integer))
@@ -1090,11 +1090,11 @@
 (new-trace "new-fn-arg-random-then-sequential")
 ;? (set dump-trace*)
 (add-code
-  '((def test1 [
+  '((function test1 [
       (_ <- input (1 literal))
       ((1 integer) <- next-input)  ; takes next arg after index 1
      ])  ; should never run
-    (def main [
+    (function main [
       (test1 (1 literal) (2 literal) (3 literal))
      ])))
 (run 'main)
@@ -1106,10 +1106,10 @@
 (reset)
 (new-trace "new-fn-arg-status")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((4 integer) (5 boolean) <- next-input)
      ])
-    (def main [
+    (function main [
       (test1 (1 literal))
      ])))
 (run 'main)
@@ -1121,11 +1121,11 @@
 (reset)
 (new-trace "new-fn-arg-missing")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((4 integer) <- next-input)
       ((5 integer) <- next-input)
      ])
-    (def main [
+    (function main [
       (test1 (1 literal))
      ])))
 (run 'main)
@@ -1137,11 +1137,11 @@
 (reset)
 (new-trace "new-fn-arg-missing-2")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((4 integer) <- next-input)
       ((5 integer) (6 boolean) <- next-input)
      ])
-    (def main [
+    (function main [
       (test1 (1 literal))
      ])))
 (run 'main)
@@ -1153,12 +1153,12 @@
 (reset)
 (new-trace "new-fn-arg-missing-3")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((4 integer) <- next-input)
       ((5 integer) <- copy (34 literal))
       ((5 integer) (6 boolean) <- next-input)
     ])
-    (def main [
+    (function main [
       (test1 (1 literal))
     ])))
 (run 'main)
@@ -1170,7 +1170,7 @@
 (reset)
 (new-trace "new-fn-arg-missing-4")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ; if given two args, adds them; if given one arg, increments
       ((4 integer) <- next-input)
       ((5 integer) (6 boolean) <- next-input)
@@ -1180,7 +1180,7 @@
       }
       ((7 integer) <- add (4 integer) (5 integer))
      ])
-    (def main [
+    (function main [
       (test1 (34 literal))
      ])))
 (run 'main)
@@ -1192,11 +1192,11 @@
 (reset)
 (new-trace "new-fn-arg-by-value")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((1 integer) <- copy (0 literal))  ; overwrite caller memory
       ((2 integer) <- next-input)
      ])  ; arg not clobbered
-    (def main [
+    (function main [
       ((1 integer) <- copy (34 literal))
       (test1 (1 integer))
      ])))
@@ -1208,10 +1208,10 @@
 (reset)
 (new-trace "arg-record")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((4 integer-boolean-pair) <- next-input)
      ])
-    (def main [
+    (function main [
       ((1 integer) <- copy (34 literal))
       ((2 boolean) <- copy (nil literal))
       (test1 (1 integer-boolean-pair))
@@ -1224,10 +1224,10 @@
 (new-trace "arg-record-indirect")
 ;? (set dump-trace*)
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((4 integer-boolean-pair) <- next-input)
      ])
-    (def main [
+    (function main [
       ((1 integer) <- copy (34 literal))
       ((2 boolean) <- copy (nil literal))
       ((3 integer-boolean-pair-address) <- copy (1 literal))
@@ -1241,14 +1241,14 @@
 (reset)
 (new-trace "new-fn-reply-oarg")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((4 integer) <- next-input)
       ((5 integer) <- next-input)
       ((6 integer) <- add (4 integer) (5 integer))
       (reply (6 integer))
       ((4 integer) <- copy (34 literal))
      ])
-    (def main [
+    (function main [
       ((1 integer) <- copy (1 literal))
       ((2 integer) <- copy (3 literal))
       ((3 integer) <- test1 (1 integer) (2 integer))
@@ -1263,14 +1263,14 @@
 (reset)
 (new-trace "new-fn-reply-oarg-multiple")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((4 integer) <- next-input)
       ((5 integer) <- next-input)
       ((6 integer) <- add (4 integer) (5 integer))
       (reply (6 integer) (5 integer))
       ((4 integer) <- copy (34 literal))
      ])
-    (def main [
+    (function main [
       ((1 integer) <- copy (1 literal))
       ((2 integer) <- copy (3 literal))
       ((3 integer) (7 integer) <- test1 (1 integer) (2 integer))
@@ -1285,7 +1285,7 @@
 (reset)
 (new-trace "new-fn-prepare-reply")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((4 integer) <- next-input)
       ((5 integer) <- next-input)
       ((6 integer) <- add (4 integer) (5 integer))
@@ -1293,7 +1293,7 @@
       (reply)
       ((4 integer) <- copy (34 literal))
      ])
-    (def main [
+    (function main [
       ((1 integer) <- copy (1 literal))
       ((2 integer) <- copy (3 literal))
       ((3 integer) (7 integer) <- test1 (1 integer) (2 integer))
@@ -1530,7 +1530,7 @@
 (new-trace "loop")
 ;? (set dump-trace*)
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (4 literal))
       ((2 integer) <- copy (1 literal))
       { begin
@@ -1555,7 +1555,7 @@
 (new-trace "loop-nested")
 ;? (set dump-trace*)
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (4 literal))
       ((2 integer) <- copy (1 literal))
       { begin
@@ -1578,7 +1578,7 @@
 (reset)
 (new-trace "loop-fail")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (4 literal))
       ((2 integer) <- copy (2 literal))
       { begin
@@ -1743,7 +1743,7 @@
 (reset)
 (new-trace "new-primitive")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer-address) <- new (integer literal))
      ])))
 (let routine make-routine!main
@@ -1760,7 +1760,7 @@
 (reset)
 (new-trace "new-array-literal")
 (add-code
-  '((def main [
+  '((function main [
       ((1 type-array-address) <- new (type-array literal) (5 literal))
      ])))
 (let routine make-routine!main
@@ -1776,7 +1776,7 @@
 (reset)
 (new-trace "new-array-direct")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (5 literal))
       ((2 type-array-address) <- new (type-array literal) (1 integer))
      ])))
@@ -1806,7 +1806,7 @@
 (reset)
 (new-trace "set-default-scope")
 (add-code
-  '((def main [
+  '((function main [
       ((default-scope scope-address) <- new (scope literal) (2 literal))
       ((1 integer) <- copy (23 literal))
      ])))
@@ -1823,7 +1823,7 @@
 (reset)
 (new-trace "set-default-scope-skips-offset")
 (add-code
-  '((def main [
+  '((function main [
       ((default-scope scope-address) <- new (scope literal) (2 literal))
       ((1 integer) <- copy (23 offset))
      ])))
@@ -1840,7 +1840,7 @@
 (reset)
 (new-trace "default-scope-bounds-check")
 (add-code
-  '((def main [
+  '((function main [
       ((default-scope scope-address) <- new (scope literal) (2 literal))
       ((2 integer) <- copy (23 literal))
      ])))
@@ -1854,7 +1854,7 @@
 (reset)
 (new-trace "default-scope-and-get-indirect")
 (add-code
-  '((def main [
+  '((function main [
       ((default-scope scope-address) <- new (scope literal) (5 literal))
       ((1 integer-boolean-pair-address) <- new (integer-boolean-pair literal))
       ((2 integer-address) <- get-address (1 integer-boolean-pair-address deref) (0 offset))
@@ -1874,7 +1874,7 @@
 (reset)
 (new-trace "default-scope-and-index-indirect")
 (add-code
-  '((def main [
+  '((function main [
       ((default-scope scope-address) <- new (scope literal) (5 literal))
       ((1 integer-array-address) <- new (integer-array literal) (4 literal))
       ((2 integer-address) <- index-address (1 integer-array-address deref) (2 offset))
@@ -1907,7 +1907,7 @@
 (reset)
 (new-trace "suppress-default-scope")
 (add-code
-  '((def main [
+  '((function main [
       ((default-scope scope-address) <- new (scope literal) (2 literal))
       ((1 integer global) <- copy (23 literal))
      ])))
@@ -1925,7 +1925,7 @@
 (reset)
 (new-trace "array-copy-indirect-scoped")
 (add-code
-  '((def main [
+  '((function main [
       ((10 integer) <- copy (30 literal))  ; pretend allocation
       ((default-scope scope-address) <- copy (10 literal))  ; unsafe
       ((1 integer) <- copy (2 literal))
@@ -1949,7 +1949,7 @@
 (reset)
 (new-trace "len-array-indirect-scoped")
 (add-code
-  '((def main [
+  '((function main [
       ((10 integer) <- copy (30 literal))  ; pretend allocation
       ((default-scope scope-address) <- copy (10 literal))  ; unsafe
       ((1 integer) <- copy (2 literal))
@@ -1976,7 +1976,7 @@
 (new-trace "dispatch-clause")
 ;? (set dump-trace*)
 (add-code
-  '((def test1 [
+  '((function test1 [
       ; doesn't matter too much how many locals you allocate space for (here 20)
       ; if it's slightly too many -- memory is plentiful
       ; if it's too few -- mu will raise an error
@@ -1993,7 +1993,7 @@
       }
       (reply (nil literal))
      ])
-    (def main [
+    (function main [
       ((1 tagged-value-address) <- new-tagged-value (integer literal) (34 literal))
       ((2 tagged-value-address) <- new-tagged-value (integer literal) (3 literal))
       ((3 integer) <- test1 (1 tagged-value-address) (2 tagged-value-address))
@@ -2010,7 +2010,7 @@
 (new-trace "dispatch-multiple-clauses")
 ;? (set dump-trace*)
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((default-scope scope-address) <- new (scope literal) (20 literal))
       ((first-arg-box tagged-value-address) <- next-input)
       ; if given integers, add them
@@ -2033,7 +2033,7 @@
       }
       (reply (nil literal))
      ])
-    (def main [
+    (function main [
       ((1 tagged-value-address) <- new-tagged-value (boolean literal) (t literal))
       ((2 tagged-value-address) <- new-tagged-value (boolean literal) (nil literal))
       ((3 boolean) <- test1 (1 tagged-value-address) (2 tagged-value-address))
@@ -2050,7 +2050,7 @@
 (reset)
 (new-trace "dispatch-multiple-calls")
 (add-code
-  '((def test1 [
+  '((function test1 [
       ((default-scope scope-address) <- new (scope literal) (20 literal))
       ((first-arg-box tagged-value-address) <- next-input)
       ; if given integers, add them
@@ -2073,7 +2073,7 @@
       }
       (reply (nil literal))
      ])
-    (def main [
+    (function main [
       ((1 tagged-value-address) <- new-tagged-value (boolean literal) (t literal))
       ((2 tagged-value-address) <- new-tagged-value (boolean literal) (nil literal))
       ((3 boolean) <- test1 (1 tagged-value-address) (2 tagged-value-address))
@@ -2101,10 +2101,10 @@
 (new-trace "scheduler")
 (= traces* (queue))
 (add-code
-  '((def f1 [
+  '((function f1 [
       ((1 integer) <- copy (3 literal))
      ])
-    (def f2 [
+    (function f2 [
       ((2 integer) <- copy (4 literal))
      ])))
 (run 'f1 'f2)
@@ -2127,11 +2127,11 @@
 (new-trace "scheduler-alternate")
 (= traces* (queue))
 (add-code
-  '((def f1 [
+  '((function f1 [
       ((1 integer) <- copy (3 literal))
       ((1 integer) <- copy (3 literal))
      ])
-    (def f2 [
+    (function f2 [
       ((2 integer) <- copy (4 literal))
       ((2 integer) <- copy (4 literal))
      ])))
@@ -2148,10 +2148,10 @@
 (new-trace "scheduler-sleep")
 (= traces* (queue))
 (add-code
-  '((def f1 [
+  '((function f1 [
       ((1 integer) <- copy (3 literal))
      ])
-    (def f2 [
+    (function f2 [
       ((2 integer) <- copy (4 literal))
      ])))
 ; add one baseline routine to run (empty running-routines* handled below)
@@ -2173,10 +2173,10 @@
 (new-trace "scheduler-wakeup")
 (= traces* (queue))
 (add-code
-  '((def f1 [
+  '((function f1 [
       ((1 integer) <- copy (3 literal))
      ])
-    (def f2 [
+    (function f2 [
       ((2 integer) <- copy (4 literal))
      ])))
 ; add one baseline routine to run (empty running-routines* handled below)
@@ -2196,10 +2196,10 @@
 (new-trace "scheduler-sleep-location")
 (= traces* (queue))
 (add-code
-  '((def f1 [
+  '((function f1 [
       ((1 integer) <- copy (3 literal))
      ])
-    (def f2 [
+    (function f2 [
       ((2 integer) <- copy (4 literal))
      ])))
 ; add one baseline routine to run (empty running-routines* handled below)
@@ -2228,10 +2228,10 @@
 (new-trace "scheduler-wakeup-location")
 (= traces* (queue))
 (add-code
-  '((def f1 [
+  '((function f1 [
       ((1 integer) <- copy (3 literal))
      ])
-    (def f2 [
+    (function f2 [
       ((2 integer) <- copy (4 literal))
      ])))
 ; add one baseline routine to run (empty running-routines* handled below)
@@ -2252,7 +2252,7 @@
 (new-trace "scheduler-skip")
 (= traces* (queue))
 (add-code
-  '((def f1 [
+  '((function f1 [
       ((1 integer) <- copy (3 literal))
      ])))
 ; running-routines* is empty
@@ -2272,7 +2272,7 @@
 (new-trace "scheduler-deadlock")
 (= traces* (queue))
 (add-code
-  '((def f1 [
+  '((function f1 [
       ((1 integer) <- copy (3 literal))
      ])))
 (assert (empty running-routines*))
@@ -2295,7 +2295,7 @@
 (new-trace "scheduler-deadlock2")
 (= traces* (queue))
 (add-code
-  '((def f1 [
+  '((function f1 [
       ((1 integer) <- copy (3 literal))
      ])))
 ; running-routines* is empty
@@ -2313,12 +2313,12 @@
 (reset)
 (new-trace "sleep")
 (add-code
-  '((def f1 [
+  '((function f1 [
       (sleep (1 literal))
       ((1 integer) <- copy (3 literal))
       ((1 integer) <- copy (3 literal))
      ])
-    (def f2 [
+    (function f2 [
       ((2 integer) <- copy (4 literal))
       ((2 integer) <- copy (4 literal))
      ])))
@@ -2338,12 +2338,12 @@
 (reset)
 (new-trace "sleep-long")
 (add-code
-  '((def f1 [
+  '((function f1 [
       (sleep (20 literal))
       ((1 integer) <- copy (3 literal))
       ((1 integer) <- copy (3 literal))
      ])
-    (def f2 [
+    (function f2 [
       ((2 integer) <- copy (4 literal))
       ((2 integer) <- copy (4 literal))
      ])))
@@ -2363,13 +2363,13 @@
 (reset)
 (new-trace "sleep-location")
 (add-code
-  '((def f1 [
+  '((function f1 [
       ; waits for memory location 1 to be set, before computing its successor
       ((1 integer) <- copy (0 literal))
       (sleep (1 integer))
       ((2 integer) <- add (1 integer) (1 literal))
      ])
-    (def f2 [
+    (function f2 [
       (sleep (30 literal))
       ((1 integer) <- copy (3 literal))  ; set to value
      ])))
@@ -2386,7 +2386,7 @@
 (reset)
 (new-trace "sleep-scoped-location")
 (add-code
-  '((def f1 [
+  '((function f1 [
       ; waits for memory location 1 to be changed, before computing its successor
       ((10 integer) <- copy (5 literal))  ; array of locals
       ((default-scope scope-address) <- copy (10 literal))
@@ -2394,7 +2394,7 @@
       (sleep (1 integer))
       ((2 integer) <- add (1 integer) (1 literal))
      ])
-    (def f2 [
+    (function f2 [
       (sleep (30 literal))
       ((11 integer) <- copy (3 literal))  ; set to value
      ])))
@@ -2407,10 +2407,10 @@
 (reset)
 (new-trace "fork")
 (add-code
-  '((def f1 [
+  '((function f1 [
       (fork (f2 fn))
      ])
-    (def f2 [
+    (function f2 [
       ((2 integer) <- copy (4 literal))
      ])))
 (run 'f1)
@@ -2420,10 +2420,10 @@
 (reset)
 (new-trace "fork-with-args")
 (add-code
-  '((def f1 [
+  '((function f1 [
       (fork (f2 fn) (4 literal))
      ])
-    (def f2 [
+    (function f2 [
       ((2 integer) <- next-input)
      ])))
 (run 'f1)
@@ -2433,13 +2433,13 @@
 (reset)
 (new-trace "fork-copies-args")
 (add-code
-  '((def f1 [
+  '((function f1 [
       ((default-scope scope-address) <- new (scope literal) (5 literal))
       ((x integer) <- copy (4 literal))
       (fork (f2 fn) (x integer))
       ((x integer) <- copy (0 literal))  ; should be ignored
      ])
-    (def f2 [
+    (function f2 [
       ((2 integer) <- next-input)
      ])))
 (run 'f1)
@@ -2457,7 +2457,7 @@
 (reset)
 (new-trace "array-bounds-check")
 (add-code
-  '((def main [
+  '((function main [
       ((1 integer) <- copy (2 literal))
       ((2 integer) <- copy (23 literal))
       ((3 integer) <- copy (24 literal))
@@ -2488,7 +2488,7 @@
 (reset)
 (new-trace "channel-new")
 (add-code
-  '((def main [
+  '((function main [
       ((1 channel-address) <- new-channel (3 literal))
       ((2 integer) <- get (1 channel-address deref) (first-full offset))
       ((3 integer) <- get (1 channel-address deref) (first-free offset))
@@ -2503,7 +2503,7 @@
 (reset)
 (new-trace "channel-write")
 (add-code
-  '((def main [
+  '((function main [
       ((1 channel-address) <- new-channel (3 literal))
       ((2 integer-address) <- new (integer literal))
       ((2 integer-address deref) <- copy (34 literal))
@@ -2525,7 +2525,7 @@
 (reset)
 (new-trace "channel-read")
 (add-code
-  '((def main [
+  '((function main [
       ((1 channel-address) <- new-channel (3 literal))
       ((2 integer-address) <- new (integer literal))
       ((2 integer-address deref) <- copy (34 literal))
@@ -2549,7 +2549,7 @@
 (reset)
 (new-trace "channel-write-wrap")
 (add-code
-  '((def main [
+  '((function main [
       ; channel with 1 slot
       ((1 channel-address) <- new-channel (1 literal))
       ; write a value
@@ -2576,7 +2576,7 @@
 (reset)
 (new-trace "channel-read-wrap")
 (add-code
-  '((def main [
+  '((function main [
       ; channel with 1 slot
       ((1 channel-address) <- new-channel (1 literal))
       ; write a value
@@ -2605,7 +2605,7 @@
 (reset)
 (new-trace "channel-new-empty-not-full")
 (add-code
-  '((def main [
+  '((function main [
       ((1 channel-address) <- new-channel (3 literal))
       ((2 boolean) <- empty? (1 channel-address deref))
       ((3 boolean) <- full? (1 channel-address deref))
@@ -2620,7 +2620,7 @@
 (reset)
 (new-trace "channel-write-not-empty")
 (add-code
-  '((def main [
+  '((function main [
       ((1 channel-address) <- new-channel (3 literal))
       ((2 integer-address) <- new (integer literal))
       ((2 integer-address deref) <- copy (34 literal))
@@ -2639,7 +2639,7 @@
 (reset)
 (new-trace "channel-write-full")
 (add-code
-  '((def main [
+  '((function main [
       ((1 channel-address) <- new-channel (1 literal))
       ((2 integer-address) <- new (integer literal))
       ((2 integer-address deref) <- copy (34 literal))
@@ -2658,7 +2658,7 @@
 (reset)
 (new-trace "channel-read-not-full")
 (add-code
-  '((def main [
+  '((function main [
       ((1 channel-address) <- new-channel (3 literal))
       ((2 integer-address) <- new (integer literal))
       ((2 integer-address deref) <- copy (34 literal))
@@ -2679,7 +2679,7 @@
 (reset)
 (new-trace "channel-read-empty")
 (add-code
-  '((def main [
+  '((function main [
       ((1 channel-address) <- new-channel (3 literal))
       ((2 integer-address) <- new (integer literal))
       ((2 integer-address deref) <- copy (34 literal))
@@ -2702,7 +2702,7 @@
 (reset)
 (new-trace "channel-read-block")
 (add-code
-  '((def main [
+  '((function main [
       ((1 channel-address) <- new-channel (3 literal))
       ; channel is empty, but receives a read
       ((2 tagged-value) (1 channel-address deref) <- read (1 channel-address))
@@ -2725,7 +2725,7 @@
 (reset)
 (new-trace "channel-write-block")
 (add-code
-  '((def main [
+  '((function main [
       ((1 channel-address) <- new-channel (1 literal))
       ((2 integer-address) <- new (integer literal))
       ((2 integer-address deref) <- copy (34 literal))
@@ -2753,13 +2753,13 @@
 (reset)
 (new-trace "channel-handoff")
 (add-code
-  '((def f1 [
+  '((function f1 [
       ((default-scope scope-address) <- new (scope literal) (30 literal))
       ((chan channel-address) <- new-channel (3 literal))
       (fork (f2 fn) (chan channel-address))
       ((1 tagged-value global) <- read (chan channel-address))  ; output
      ])
-    (def f2 [
+    (function f2 [
       ((default-scope scope-address) <- new (scope literal) (30 literal))
       ((n integer-address) <- new (integer literal))
       ((n integer-address deref) <- copy (24 literal))
@@ -3113,7 +3113,7 @@
 (add-code '((after label1 [
                ((1 integer) <- copy (0 literal))
              ])
-            (def f1 [
+            (function f1 [
               { begin
                 label1
               }
@@ -3128,7 +3128,7 @@
 (new-trace "before-after-any-order")
 (= traces* (queue))
 (= function* (table))
-(add-code '((def f1 [
+(add-code '((function f1 [
               { begin
                 label1
               }
@@ -3146,10 +3146,10 @@
 (new-trace "multiple-defs")
 (= traces* (queue))
 (= function* (table))
-(add-code '((def f1 [
+(add-code '((function f1 [
               ((1 integer) <- copy (0 literal))
              ])
-            (def f1 [
+            (function f1 [
               ((2 integer) <- copy (0 literal))
              ])))
 (freeze-functions)
@@ -3162,10 +3162,10 @@
 (new-trace "def!")
 (= traces* (queue))
 (= function* (table))
-(add-code '((def f1 [
+(add-code '((function f1 [
               ((1 integer) <- copy (0 literal))
              ])
-            (def! f1 [
+            (function! f1 [
               ((2 integer) <- copy (0 literal))
              ])))
 (freeze-functions)
@@ -3192,7 +3192,7 @@
 
 (reset)
 (new-trace "string-new")
-(add-code '((def main [
+(add-code '((function main [
               ((1 string-address) <- new (string literal) (5 literal))
              ])))
 (let routine make-routine!main
@@ -3205,7 +3205,7 @@
 ; Convenience: initialize strings using string literals
 (reset)
 (new-trace "string-literal")
-(add-code '((def main [
+(add-code '((function main [
               ((1 string-address) <- new "hello")
              ])))
 (let routine make-routine!main
@@ -3219,7 +3219,7 @@
 
 (reset)
 (new-trace "strcat")
-(add-code '((def main [
+(add-code '((function main [
               ((1 string-address) <- new "hello,")
               ((2 string-address) <- new " world!")
               ((3 string-address) <- strcat (1 string-address) (2 string-address))
@@ -3230,7 +3230,7 @@
 
 (reset)
 (new-trace "interpolate")
-(add-code '((def main [
+(add-code '((function main [
               ((1 string-address) <- new "hello, _!")
               ((2 string-address) <- new "abc")
               ((3 string-address) <- interpolate (1 string-address) (2 string-address))
@@ -3242,7 +3242,7 @@
 
 (reset)
 (new-trace "interpolate-empty")
-(add-code '((def main [
+(add-code '((function main [
               ((1 string-address) <- new "hello!")
               ((2 string-address) <- new "abc")
               ((3 string-address) <- interpolate (1 string-address) (2 string-address))
@@ -3254,7 +3254,7 @@
 
 (reset)
 (new-trace "interpolate-at-start")
-(add-code '((def main [
+(add-code '((function main [
               ((1 string-address) <- new "_, hello!")
               ((2 string-address) <- new "abc")
               ((3 string-address) <- interpolate (1 string-address) (2 string-address))
@@ -3266,7 +3266,7 @@
 
 (reset)
 (new-trace "interpolate-at-end")
-(add-code '((def main [
+(add-code '((function main [
               ((1 string-address) <- new "hello, _")
               ((2 string-address) <- new "abc")
               ((3 string-address) <- interpolate (1 string-address) (2 string-address))
@@ -3278,7 +3278,7 @@
 
 (reset)
 (new-trace "interpolate-varargs")
-(add-code '((def main [
+(add-code '((function main [
               ((1 string-address) <- new "hello, _, _, and _!")
               ((2 string-address) <- new "abc")
               ((3 string-address) <- new "def")
diff --git a/tangle.mu b/tangle.mu
index 21d9800e..0a7bc05e 100644
--- a/tangle.mu
+++ b/tangle.mu
@@ -3,7 +3,7 @@
 ; This isn't a very realistic example, just a simple demonstration of
 ; possibilities.
 
-(def factorial [
+(function factorial [
   ((default-scope scope-address) <- new (scope literal) (30 literal))
   ((n integer) <- next-input)
   { begin
@@ -27,7 +27,7 @@
   (reply (result integer))
 ])
 
-(def main [
+(function main [
   ((1 integer) <- factorial (5 literal))
   (print-primitive ("result: " literal))
   (print-primitive (1 integer))
diff --git a/x.mu b/x.mu
index 8dec2828..dac4fe1c 100644
--- a/x.mu
+++ b/x.mu
@@ -1,4 +1,4 @@
-(def main [
+(function main [
   ((x integer) <- copy (1 literal))
   ((y integer) <- copy (3 literal))
   ((z integer) <- add (x integer) (y integer))