diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2014-10-18 16:50:54 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2014-10-18 16:50:54 -0700 |
commit | bb362d9c671f1a940ae1ae98ee736025346aa72d (patch) | |
tree | b1e64506920c38d8b0f7f30fb217d1794b6742f5 | |
parent | cffd6659e88ba90d958fc44fa1533c9479319d4e (diff) | |
download | mu-bb362d9c671f1a940ae1ae98ee736025346aa72d.tar.gz |
151
-rw-r--r-- | mu.arc.t | 2 | ||||
-rw-r--r-- | mu.arc.t.html | 975 |
2 files changed, 492 insertions, 485 deletions
diff --git a/mu.arc.t b/mu.arc.t index f7b77b28..5865ba71 100644 --- a/mu.arc.t +++ b/mu.arc.t @@ -248,7 +248,7 @@ (run 'test1) ;? (prn memory*) (if (~iso memory* (obj 1 2 2 2)) - (prn "F - 'idiv' performs integer division, returning quotient and retest1der")) + (prn "F - 'idiv' performs integer division, returning quotient and remainder")) ; Basic boolean operations: and, or, not ; There are easy ways to encode booleans in binary, but we'll skip past those diff --git a/mu.arc.t.html b/mu.arc.t.html index 95bd9328..4afb3760 100644 --- a/mu.arc.t.html +++ b/mu.arc.t.html @@ -2,7 +2,7 @@ <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> -<title>~/Desktop/s/mu/mu.arc.t.html</title> +<title>mu.arc.t</title> <meta name="Generator" content="Vim/7.4"> <meta name="plugin-version" content="vim7.4_v1"> <meta name="syntax" content="scheme"> @@ -10,15 +10,17 @@ <meta name="colorscheme" content="minimal"> <style type="text/css"> <!-- -pre { white-space: pre-wrap; font-family: monospace; color: #d0d0d0; background-color: #000000; } -body { font-family: monospace; color: #d0d0d0; background-color: #000000; } +pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #000000; } +body { font-family: monospace; color: #aaaaaa; background-color: #000000; } a { color:#4444ff; } * { font-size: 1em; } -.Constant { color: #008080; } +.Constant, .MuConstant { color: #008080; } .Comment { color: #8080ff; } .Delimiter { color: #600060; } -.Normal { color: #d0d0d0; } -.CommentedCode { color: #6c6c6c; } +.Normal { color: #aaaaaa; } +.Mu, .Mu .Normal, .Mu .Constant { color: #eeeeee; } +.Op { color: #ff8888; } +.CommentedCode { color: #666666; } --> </style> @@ -141,7 +143,8 @@ a { color:#4444ff; } <span class="Comment">; Other than that, we'll say no more about the code, and focus in the rest of</span> <span class="Comment">; this file on the scenarios the code cares about.</span> -<span class="Delimiter">(</span>load <span class="Constant">"mu.arc"</span><span class="Delimiter">)</span> +<span class="Mu"> +<span class="Delimiter">(</span>load <span class="MuConstant">"mu.arc"</span><span class="Delimiter">)</span> <span class="Comment">; Every test below is conceptually a run right after our virtual machine</span> <span class="Comment">; starts up. When it starts up we assume it knows about the following types.</span> @@ -149,42 +152,43 @@ a { color:#4444ff; } <span class="Delimiter">(</span>on-init <span class="Delimiter">(</span>= types* <span class="Delimiter">(</span>obj <span class="Comment">; Each type must be scalar or array, sum or product or primitive</span> - type <span class="Delimiter">(</span>obj size <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Comment">; implicitly scalar and primitive</span> - type-address <span class="Delimiter">(</span>obj size <span class="Constant">1</span> address t elem <span class="Delimiter">'</span>type<span class="Delimiter">)</span> + type <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span><span class="Delimiter">)</span> <span class="Comment">; implicitly scalar and primitive</span> + type-address <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span> address t elem <span class="Delimiter">'</span>type<span class="Delimiter">)</span> type-array <span class="Delimiter">(</span>obj array t elem <span class="Delimiter">'</span>type<span class="Delimiter">)</span> - type-array-address <span class="Delimiter">(</span>obj size <span class="Constant">1</span> address t elem <span class="Delimiter">'</span>type-array<span class="Delimiter">)</span> - location <span class="Delimiter">(</span>obj size <span class="Constant">1</span> address t elem <span class="Delimiter">'</span>location<span class="Delimiter">)</span> <span class="Comment">; assume it points to an atom</span> - integer <span class="Delimiter">(</span>obj size <span class="Constant">1</span><span class="Delimiter">)</span> - boolean <span class="Delimiter">(</span>obj size <span class="Constant">1</span><span class="Delimiter">)</span> - boolean-address <span class="Delimiter">(</span>obj size <span class="Constant">1</span> address t<span class="Delimiter">)</span> - byte <span class="Delimiter">(</span>obj size <span class="Constant">1</span><span class="Delimiter">)</span> + type-array-address <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span> address t elem <span class="Delimiter">'</span>type-array<span class="Delimiter">)</span> + location <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span> address t elem <span class="Delimiter">'</span>location<span class="Delimiter">)</span> <span class="Comment">; assume it points to an atom</span> + integer <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span><span class="Delimiter">)</span> + boolean <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span><span class="Delimiter">)</span> + boolean-address <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span> address t<span class="Delimiter">)</span> + byte <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span><span class="Delimiter">)</span> <span class="CommentedCode">;? string (obj array t elem 'byte) ; inspired by Go</span> - character <span class="Delimiter">(</span>obj size <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Comment">; int32 like a Go rune</span> - character-address <span class="Delimiter">(</span>obj size <span class="Constant">1</span> address t elem <span class="Delimiter">'</span>character<span class="Delimiter">)</span> - string <span class="Delimiter">(</span>obj size <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Comment">; temporary hack</span> + character <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span><span class="Delimiter">)</span> <span class="Comment">; int32 like a Go rune</span> + character-address <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span> address t elem <span class="Delimiter">'</span>character<span class="Delimiter">)</span> + string <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span><span class="Delimiter">)</span> <span class="Comment">; temporary hack</span> <span class="Comment">; arrays consist of an integer length followed by the right number of elems</span> integer-array <span class="Delimiter">(</span>obj array t elem <span class="Delimiter">'</span>integer<span class="Delimiter">)</span> - integer-address <span class="Delimiter">(</span>obj size <span class="Constant">1</span> address t elem <span class="Delimiter">'</span>integer<span class="Delimiter">)</span> <span class="Comment">; pointer to int</span> + integer-address <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span> address t elem <span class="Delimiter">'</span>integer<span class="Delimiter">)</span> <span class="Comment">; pointer to int</span> <span class="Comment">; records consist of a series of elems, corresponding to a list of types</span> - integer-boolean-pair <span class="Delimiter">(</span>obj size <span class="Constant">2</span> record t elems <span class="Delimiter">'(</span>integer boolean<span class="Delimiter">))</span> - integer-boolean-pair-address <span class="Delimiter">(</span>obj size <span class="Constant">1</span> address t elem <span class="Delimiter">'</span>integer-boolean-pair<span class="Delimiter">)</span> + integer-boolean-pair <span class="Delimiter">(</span>obj size <span class="MuConstant">2</span> record t elems <span class="Delimiter">'(</span>integer boolean<span class="Delimiter">))</span> + integer-boolean-pair-address <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span> address t elem <span class="Delimiter">'</span>integer-boolean-pair<span class="Delimiter">)</span> integer-boolean-pair-array <span class="Delimiter">(</span>obj array t elem <span class="Delimiter">'</span>integer-boolean-pair<span class="Delimiter">)</span> - integer-integer-pair <span class="Delimiter">(</span>obj size <span class="Constant">2</span> record t elems <span class="Delimiter">'(</span>integer integer<span class="Delimiter">))</span> - integer-point-pair <span class="Delimiter">(</span>obj size <span class="Constant">2</span> record t elems <span class="Delimiter">'(</span>integer integer-integer-pair<span class="Delimiter">))</span> + integer-integer-pair <span class="Delimiter">(</span>obj size <span class="MuConstant">2</span> record t elems <span class="Delimiter">'(</span>integer integer<span class="Delimiter">))</span> + integer-point-pair <span class="Delimiter">(</span>obj size <span class="MuConstant">2</span> record t elems <span class="Delimiter">'(</span>integer integer-integer-pair<span class="Delimiter">))</span> <span class="Comment">; tagged-values are the foundation of dynamic types</span> - tagged-value <span class="Delimiter">(</span>obj size <span class="Constant">2</span> record t elems <span class="Delimiter">'(</span>type location<span class="Delimiter">))</span> - tagged-value-address <span class="Delimiter">(</span>obj size <span class="Constant">1</span> address t elem <span class="Delimiter">'</span>tagged-value<span class="Delimiter">)</span> + tagged-value <span class="Delimiter">(</span>obj size <span class="MuConstant">2</span> record t elems <span class="Delimiter">'(</span>type location<span class="Delimiter">))</span> + tagged-value-address <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span> address t elem <span class="Delimiter">'</span>tagged-value<span class="Delimiter">)</span> <span class="Comment">; heterogeneous lists</span> - list <span class="Delimiter">(</span>obj size <span class="Constant">2</span> record t elems <span class="Delimiter">'(</span>tagged-value list-address<span class="Delimiter">))</span> - list-address <span class="Delimiter">(</span>obj size <span class="Constant">1</span> address t elem <span class="Delimiter">'</span>list<span class="Delimiter">)</span> - list-address-address <span class="Delimiter">(</span>obj size <span class="Constant">1</span> address t elem <span class="Delimiter">'</span>list-address<span class="Delimiter">)</span> + list <span class="Delimiter">(</span>obj size <span class="MuConstant">2</span> record t elems <span class="Delimiter">'(</span>tagged-value list-address<span class="Delimiter">))</span> + list-address <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span> address t elem <span class="Delimiter">'</span>list<span class="Delimiter">)</span> + list-address-address <span class="Delimiter">(</span>obj size <span class="MuConstant">1</span> address t elem <span class="Delimiter">'</span>list-address<span class="Delimiter">)</span> <span class="Delimiter">)))</span> +</span> <span class="Comment">; Our language is assembly-like in that functions consist of series of</span> <span class="Comment">; statements, and statements consist of an operation and its arguments (input</span> <span class="Comment">; and output).</span> <span class="Comment">;</span> -<span class="Comment">; oarg1, oarg2, ... <- op arg1, arg2, ...</span> +<span class="Comment">; oarg1, oarg2, ... <span class="Op"><-</span> op arg1, arg2, ...</span> <span class="Comment">;</span> <span class="Comment">; Args must be atomic, like an integer or a memory address, they can't be</span> <span class="Comment">; expressions doing arithmetic or function calls. But we can have any number</span> @@ -194,7 +198,7 @@ a { color:#4444ff; } <span class="Comment">; idealized syntax above. For now they will be lists of lists:</span> <span class="Comment">;</span> <span class="Comment">; (function-name</span> -<span class="Comment">; ((oarg1 oarg2 ... <- op arg1 arg2 ...)</span> +<span class="Comment">; ((oarg1 oarg2 ... <span class="Op"><-</span> op arg1 arg2 ...)</span> <span class="Comment">; ...</span> <span class="Comment">; ...))</span> <span class="Comment">;</span> @@ -207,12 +211,15 @@ a { color:#4444ff; } <span class="Comment">; aren't provided. Instead of a monolithic compiler I want to build simple,</span> <span class="Comment">; lightweight tools that can be combined in various ways, say for using</span> <span class="Comment">; different typecheckers in different subsystems.</span> +<span class="Comment">;</span> +<span class="Comment">; In the rest of this file we'll highlight lines of the assembly language</span> +<span class="Comment">; and <span style='color:#aaaaaa'>deemphasize</span> the (ugly) test harness.</span> <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"literal"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">23</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">23</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is memory*.1 <span class="Constant">23</span><span class="Delimiter">)</span> @@ -225,10 +232,10 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"add"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">1</span> <span class="Constant">2</span> <span class="Constant">3</span> <span class="Constant">3</span> <span class="Constant">4</span><span class="Delimiter">))</span> <span class="Delimiter">(</span>prn <span class="Constant">"F - 'add' operates on two addresses"</span><span class="Delimiter">))</span> @@ -236,8 +243,8 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"add-literal"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is memory*.1 <span class="Constant">5</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>prn <span class="Constant">"F - ops can take 'literal' operands (but not return them)"</span><span class="Delimiter">))</span> @@ -245,8 +252,8 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"sub-literal"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- sub <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> sub <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is memory*.1 <span class="Constant">-2</span><span class="Delimiter">)</span> @@ -255,8 +262,8 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"mul-literal"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- mul <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> mul <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is memory*.1 <span class="Constant">6</span><span class="Delimiter">)</span> @@ -265,8 +272,8 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"div-literal"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- div <span class="Delimiter">(</span><span class="Constant">8</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> div <span class="Delimiter">(</span><span class="MuConstant">8</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is memory*.1 <span class="Delimiter">(</span>/ real.8 <span class="Constant">3</span><span class="Delimiter">))</span> @@ -275,12 +282,12 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"idiv-literal"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- idiv <span class="Delimiter">(</span><span class="Constant">8</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> idiv <span class="Delimiter">(</span><span class="MuConstant">8</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">2</span> <span class="Constant">2</span> <span class="Constant">2</span><span class="Delimiter">))</span> - <span class="Delimiter">(</span>prn <span class="Constant">"F - 'idiv' performs integer division, returning quotient and retest1der"</span><span class="Delimiter">))</span> + <span class="Delimiter">(</span>prn <span class="Constant">"F - 'idiv' performs integer division, returning quotient and remainder"</span><span class="Delimiter">))</span> <span class="Comment">; Basic boolean operations: and, or, not</span> <span class="Comment">; There are easy ways to encode booleans in binary, but we'll skip past those</span> @@ -289,8 +296,8 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"and-literal"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <- and <span class="Delimiter">(</span>t literal<span class="Delimiter">)</span> <span class="Delimiter">(</span>nil literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> and <span class="Delimiter">(</span><span class="MuConstant">t</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">nil</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is memory*.1 nil<span class="Delimiter">)</span> @@ -301,8 +308,8 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"lt-literal"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <- lt <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> lt <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is memory*.1 nil<span class="Delimiter">)</span> @@ -311,8 +318,8 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"le-literal-false"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <- le <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> le <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is memory*.1 nil<span class="Delimiter">)</span> @@ -321,8 +328,8 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"le-literal-true"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <- le <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> le <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is memory*.1 t<span class="Delimiter">)</span> @@ -331,8 +338,8 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"le-literal-true-2"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <- le <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> le <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">5</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is memory*.1 t<span class="Delimiter">)</span> @@ -345,11 +352,11 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"jump-skip"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">8</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>jump <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">))</span> <span class="Comment">; should be skipped</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">8</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>jump <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">))</span> <span class="Comment">; should be skipped</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">8</span><span class="Delimiter">))</span> @@ -358,12 +365,12 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"jump-target"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">8</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>jump <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">))</span> <span class="Comment">; should be skipped</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">)))))</span> <span class="Comment">; never reached</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">8</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>jump <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">))</span> <span class="Comment">; should be skipped</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">)))))</span> <span class="Comment">; never reached</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">8</span><span class="Delimiter">))</span> @@ -373,13 +380,13 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"jump-if-skip"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <- eq <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>jump-if <span class="Delimiter">(</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> eq <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>jump-if <span class="Delimiter">(</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> t <span class="Constant">2</span> <span class="Constant">1</span><span class="Delimiter">))</span> @@ -388,12 +395,12 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"jump-if-fallthrough"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <- eq <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>jump-if <span class="Delimiter">(</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> eq <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>jump-if <span class="Delimiter">(</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> nil <span class="Constant">2</span> <span class="Constant">3</span><span class="Delimiter">))</span> @@ -402,16 +409,16 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"jump-if-backward"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> <span class="Comment">; loop</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <- eq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>jump-if <span class="Delimiter">(</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">-3</span> offset<span class="Delimiter">))</span> <span class="Comment">; to loop</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> eq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>jump-if <span class="Delimiter">(</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">-3</span> offset<span class="Delimiter">))</span> <span class="Comment">; to loop</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">2</span> <span class="Constant">2</span> <span class="Constant">4</span> <span class="Constant">3</span> nil <span class="Constant">4</span> <span class="Constant">3</span><span class="Delimiter">))</span> @@ -424,9 +431,9 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"direct-addressing"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">34</span> <span class="Constant">2</span> <span class="Constant">34</span><span class="Delimiter">))</span> @@ -440,10 +447,10 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"indirect-addressing"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer-address<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> integer-address deref<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer-address<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="Constant">1</span> integer-address deref<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">2</span> <span class="Constant">2</span> <span class="Constant">34</span> <span class="Constant">3</span> <span class="Constant">34</span><span class="Delimiter">))</span> @@ -455,10 +462,10 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"indirect-addressing-oarg"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer-address<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">1</span> integer-address deref<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer-address<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer-address deref<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">2</span> <span class="Constant">2</span> <span class="Constant">36</span><span class="Delimiter">))</span> @@ -473,11 +480,11 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"get-record"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> boolean<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>nil literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <- get <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- get <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">0</span> offset<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">nil</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> get <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> get <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">0</span> offset<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">34</span> <span class="Constant">2</span> nil <span class="Constant">3</span> nil <span class="Constant">4</span> <span class="Constant">34</span><span class="Delimiter">))</span> @@ -486,12 +493,12 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"get-indirect"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> boolean<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>nil literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer-boolean-pair-address<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <- get <span class="Delimiter">(</span><span class="Constant">3</span> integer-boolean-pair-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <- get <span class="Delimiter">(</span><span class="Constant">3</span> integer-boolean-pair-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">0</span> offset<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">nil</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer-boolean-pair-address<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> get <span class="Delimiter">(</span><span class="Constant">3</span> integer-boolean-pair-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> get <span class="Delimiter">(</span><span class="Constant">3</span> integer-boolean-pair-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">0</span> offset<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">34</span> <span class="Constant">2</span> nil <span class="Constant">3</span> <span class="Constant">1</span> <span class="Constant">4</span> nil <span class="Constant">5</span> <span class="Constant">34</span><span class="Delimiter">))</span> @@ -500,11 +507,11 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"get-compound-field"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">35</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">36</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer-integer-pair<span class="Delimiter">)</span> <- get <span class="Delimiter">(</span><span class="Constant">1</span> integer-point-pair<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">35</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">36</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer-integer-pair<span class="Delimiter">)</span> <span class="Op"><-</span> get <span class="Delimiter">(</span><span class="Constant">1</span> integer-point-pair<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">34</span> <span class="Constant">2</span> <span class="Constant">35</span> <span class="Constant">3</span> <span class="Constant">36</span> <span class="Constant">4</span> <span class="Constant">35</span> <span class="Constant">5</span> <span class="Constant">36</span><span class="Delimiter">))</span> @@ -513,10 +520,10 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"get-address"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>t literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> boolean-address<span class="Delimiter">)</span> <- get-address <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">t</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> boolean-address<span class="Delimiter">)</span> <span class="Op"><-</span> get-address <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">34</span> <span class="Constant">2</span> t <span class="Constant">3</span> <span class="Constant">2</span><span class="Delimiter">))</span> @@ -525,11 +532,11 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"get-address-indirect"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>t literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer-boolean-pair-address<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> boolean-address<span class="Delimiter">)</span> <- get-address <span class="Delimiter">(</span><span class="Constant">3</span> integer-boolean-pair-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">t</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer-boolean-pair-address<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> boolean-address<span class="Delimiter">)</span> <span class="Op"><-</span> get-address <span class="Delimiter">(</span><span class="Constant">3</span> integer-boolean-pair-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">34</span> <span class="Constant">2</span> t <span class="Constant">3</span> <span class="Constant">1</span> <span class="Constant">4</span> <span class="Constant">2</span><span class="Delimiter">))</span> @@ -538,13 +545,13 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"index-array-literal"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">23</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>nil literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">24</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>t literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">6</span> integer-boolean-pair<span class="Delimiter">)</span> <- index <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair-array<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">23</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">nil</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">24</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">t</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">6</span> integer-boolean-pair<span class="Delimiter">)</span> <span class="Op"><-</span> index <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair-array<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">2</span> <span class="Constant">2</span> <span class="Constant">23</span> <span class="Constant">3</span> nil <span class="Constant">4</span> <span class="Constant">24</span> <span class="Constant">5</span> t <span class="Constant">6</span> <span class="Constant">24</span> <span class="Constant">7</span> t<span class="Delimiter">))</span> @@ -553,14 +560,14 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"index-array-direct"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">23</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>nil literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">24</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>t literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">6</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">7</span> integer-boolean-pair<span class="Delimiter">)</span> <- index <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair-array<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> integer<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">23</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">nil</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">24</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">t</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">6</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">7</span> integer-boolean-pair<span class="Delimiter">)</span> <span class="Op"><-</span> index <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair-array<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> integer<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">2</span> <span class="Constant">2</span> <span class="Constant">23</span> <span class="Constant">3</span> nil <span class="Constant">4</span> <span class="Constant">24</span> <span class="Constant">5</span> t <span class="Constant">6</span> <span class="Constant">1</span> <span class="Constant">7</span> <span class="Constant">24</span> <span class="Constant">8</span> t<span class="Delimiter">))</span> @@ -569,14 +576,14 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"index-address"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">23</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>nil literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">24</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>t literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">6</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">7</span> integer-boolean-pair-address<span class="Delimiter">)</span> <- index-address <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair-array<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> integer<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">23</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">nil</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">24</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">t</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">6</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">7</span> integer-boolean-pair-address<span class="Delimiter">)</span> <span class="Op"><-</span> index-address <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair-array<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> integer<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">2</span> <span class="Constant">2</span> <span class="Constant">23</span> <span class="Constant">3</span> nil <span class="Constant">4</span> <span class="Constant">24</span> <span class="Constant">5</span> t <span class="Constant">6</span> <span class="Constant">1</span> <span class="Constant">7</span> <span class="Constant">4</span><span class="Delimiter">))</span> @@ -589,13 +596,13 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"len-array"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">23</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>nil literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">24</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>t literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">6</span> integer<span class="Delimiter">)</span> <- len <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair-array<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">23</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">nil</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">24</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">t</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">6</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> len <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair-array<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">2</span> <span class="Constant">2</span> <span class="Constant">23</span> <span class="Constant">3</span> nil <span class="Constant">4</span> <span class="Constant">24</span> <span class="Constant">5</span> t <span class="Constant">6</span> <span class="Constant">2</span><span class="Delimiter">))</span> @@ -606,8 +613,8 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"sizeof-record"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- sizeof <span class="Delimiter">(</span>integer-boolean-pair literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> sizeof <span class="Delimiter">(</span>integer-boolean-pair literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is memory*.1 <span class="Constant">2</span><span class="Delimiter">)</span> @@ -616,8 +623,8 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"sizeof-record-not-len"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- sizeof <span class="Delimiter">(</span>integer-point-pair literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> sizeof <span class="Delimiter">(</span>integer-point-pair literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is memory*.1 <span class="Constant">3</span><span class="Delimiter">)</span> @@ -628,11 +635,11 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"compound-operand-copy"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> boolean<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>nil literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>t literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer-boolean-pair<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">nil</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">t</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer-boolean-pair<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">34</span> <span class="Constant">2</span> nil <span class="Constant">3</span> <span class="Constant">34</span> <span class="Constant">4</span> nil<span class="Delimiter">))</span> @@ -641,12 +648,12 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"compound-arg"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">4</span> integer-boolean-pair<span class="Delimiter">)</span> <- arg<span class="Delimiter">))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> boolean<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>nil literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">'((</span>test1</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer-boolean-pair<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">nil</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="Constant">1</span> integer-boolean-pair<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">34</span> <span class="Constant">2</span> nil <span class="Constant">4</span> <span class="Constant">34</span> <span class="Constant">5</span> nil<span class="Delimiter">))</span> <span class="Delimiter">(</span>prn <span class="Constant">"F - 'arg' can copy records spanning multiple locations"</span><span class="Delimiter">))</span> @@ -655,13 +662,13 @@ a { color:#4444ff; } <span class="Delimiter">(</span>new-trace <span class="Constant">"compound-arg"</span><span class="Delimiter">)</span> <span class="CommentedCode">;? (set dump-trace*)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">4</span> integer-boolean-pair<span class="Delimiter">)</span> <- arg<span class="Delimiter">))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> boolean<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>nil literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer-boolean-pair-address<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="Constant">3</span> integer-boolean-pair-address deref<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer-boolean-pair<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">nil</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer-boolean-pair-address<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="Constant">3</span> integer-boolean-pair-address deref<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">34</span> <span class="Constant">2</span> nil <span class="Constant">3</span> <span class="Constant">1</span> <span class="Constant">4</span> <span class="Constant">34</span> <span class="Constant">5</span> nil<span class="Delimiter">))</span> @@ -676,10 +683,10 @@ a { color:#4444ff; } <span class="Delimiter">(</span>new-trace <span class="Constant">"tagged-value"</span><span class="Delimiter">)</span> <span class="CommentedCode">;? (set dump-trace*)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> type<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>integer-address literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer-address<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> <span class="Comment">; pointer to nowhere</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer-address<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <- maybe-coerce <span class="Delimiter">(</span><span class="Constant">1</span> tagged-value<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer-address literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> type<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span>integer-address literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer-address<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span> <span class="Comment">; pointer to nowhere</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer-address<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> maybe-coerce <span class="Delimiter">(</span><span class="Constant">1</span> tagged-value<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer-address literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span><span class="Normal">or</span> <span class="Delimiter">(</span>~is memory*.3 <span class="Constant">34</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>~is memory*.4 t<span class="Delimiter">))</span> @@ -689,10 +696,10 @@ a { color:#4444ff; } <span class="Delimiter">(</span>new-trace <span class="Constant">"tagged-value-2"</span><span class="Delimiter">)</span> <span class="CommentedCode">;? (set dump-trace*)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> type<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>integer-address literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer-address<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> <span class="Comment">; pointer to nowhere</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer-address<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <- maybe-coerce <span class="Delimiter">(</span><span class="Constant">1</span> tagged-value<span class="Delimiter">)</span> <span class="Delimiter">(</span>boolean-address literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> type<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span>integer-address literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer-address<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span> <span class="Comment">; pointer to nowhere</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer-address<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> maybe-coerce <span class="Delimiter">(</span><span class="Constant">1</span> tagged-value<span class="Delimiter">)</span> <span class="Delimiter">(</span>boolean-address literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span><span class="Normal">or</span> <span class="Delimiter">(</span>~is memory*.3 <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>~is memory*.4 nil<span class="Delimiter">))</span> @@ -702,10 +709,10 @@ a { color:#4444ff; } <span class="Delimiter">(</span>new-trace <span class="Constant">"new-tagged-value"</span><span class="Delimiter">)</span> <span class="CommentedCode">;? (set dump-trace*)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer-address<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> <span class="Comment">; pointer to nowhere</span> - <span class="Delimiter">((</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">)</span> <- new-tagged-value <span class="Delimiter">(</span>integer-address literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> integer-address<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer-address<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <- maybe-coerce <span class="Delimiter">(</span><span class="Constant">2</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer-address literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer-address<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span> <span class="Comment">; pointer to nowhere</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> new-tagged-value <span class="Delimiter">(</span>integer-address literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> integer-address<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer-address<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> maybe-coerce <span class="Delimiter">(</span><span class="Constant">2</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer-address literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span><span class="Normal">or</span> <span class="Delimiter">(</span>~is memory*.3 <span class="Constant">34</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>~is memory*.4 t<span class="Delimiter">))</span> @@ -718,23 +725,23 @@ a { color:#4444ff; } <span class="Delimiter">(</span>new-trace <span class="Constant">"list"</span><span class="Delimiter">)</span> <span class="CommentedCode">;? (set dump-trace*)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 + <span class="Mu"><span class="Delimiter">'((</span>test1</span> <span class="Comment">; 1 points at first node: tagged-value (int 34)</span> - <span class="Delimiter">((</span><span class="Constant">1</span> list-address<span class="Delimiter">)</span> <- new <span class="Delimiter">(</span>list type<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">)</span> <- list-value-address <span class="Delimiter">(</span><span class="Constant">1</span> list-address<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> type-address<span class="Delimiter">)</span> <- get-address <span class="Delimiter">(</span><span class="Constant">2</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">0</span> offset<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> type-address deref<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>integer literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> location<span class="Delimiter">)</span> <- get-address <span class="Delimiter">(</span><span class="Constant">2</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> location deref<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">5</span> list-address-address<span class="Delimiter">)</span> <- get-address <span class="Delimiter">(</span><span class="Constant">1</span> list-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">5</span> list-address-address deref<span class="Delimiter">)</span> <- new <span class="Delimiter">(</span>list type<span class="Delimiter">))</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> list-address<span class="Delimiter">)</span> <span class="Op"><-</span> new <span class="Delimiter">(</span>list type<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> list-value-address <span class="Delimiter">(</span><span class="Constant">1</span> list-address<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> type-address<span class="Delimiter">)</span> <span class="Op"><-</span> get-address <span class="Delimiter">(</span><span class="Constant">2</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">0</span> offset<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> type-address deref<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span>integer literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> location<span class="Delimiter">)</span> <span class="Op"><-</span> get-address <span class="Delimiter">(</span><span class="Constant">2</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> location deref<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> list-address-address<span class="Delimiter">)</span> <span class="Op"><-</span> get-address <span class="Delimiter">(</span><span class="Constant">1</span> list-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> list-address-address deref<span class="Delimiter">)</span> <span class="Op"><-</span> new <span class="Delimiter">(</span>list type<span class="Delimiter">))</span></span> <span class="Comment">; 6 points at second node: tagged-value (boolean t)</span> - <span class="Delimiter">((</span><span class="Constant">6</span> list-address<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">5</span> list-address-address deref<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">7</span> tagged-value-address<span class="Delimiter">)</span> <- list-value-address <span class="Delimiter">(</span><span class="Constant">6</span> list-address<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">8</span> type-address<span class="Delimiter">)</span> <- get-address <span class="Delimiter">(</span><span class="Constant">7</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">0</span> offset<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">8</span> type-address deref<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>boolean literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">9</span> location<span class="Delimiter">)</span> <- get-address <span class="Delimiter">(</span><span class="Constant">7</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">9</span> location deref<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span>t literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">6</span> list-address<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="Constant">5</span> list-address-address deref<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">7</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> list-value-address <span class="Delimiter">(</span><span class="Constant">6</span> list-address<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">8</span> type-address<span class="Delimiter">)</span> <span class="Op"><-</span> get-address <span class="Delimiter">(</span><span class="Constant">7</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">0</span> offset<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">8</span> type-address deref<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span>boolean literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">9</span> location<span class="Delimiter">)</span> <span class="Op"><-</span> get-address <span class="Delimiter">(</span><span class="Constant">7</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">9</span> location deref<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">t</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span><span class="Normal">let</span> first Memory-in-use-until <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test1<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> @@ -751,8 +758,8 @@ a { color:#4444ff; } <span class="Delimiter">(</span>~is <span class="Delimiter">(</span>memory* <span class="Delimiter">(</span>+ second <span class="Constant">1</span><span class="Delimiter">))</span> t<span class="Delimiter">)))</span> <span class="Delimiter">(</span>prn <span class="Constant">"F - 'list' constructs a heterogeneous list, which can contain elements of different types"</span><span class="Delimiter">)))</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test2 - <span class="Delimiter">((</span><span class="Constant">10</span> list-address<span class="Delimiter">)</span> <- list-next <span class="Delimiter">(</span><span class="Constant">1</span> list-address<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test2</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">10</span> list-address<span class="Delimiter">)</span> <span class="Op"><-</span> list-next <span class="Delimiter">(</span><span class="Constant">1</span> list-address<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>test2<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is memory*.10 memory*.6<span class="Delimiter">)</span> @@ -765,12 +772,12 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"new-fn"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>test1<span class="Delimiter">))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>test1<span class="Delimiter">))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">1</span> <span class="Constant">2</span> <span class="Constant">3</span> <span class="Constant">3</span> <span class="Constant">4</span><span class="Delimiter">))</span> @@ -780,10 +787,10 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"new-fn-once"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">)))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">(</span>test1<span class="Delimiter">))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">(</span>test1<span class="Delimiter">))))</span></span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is <span class="Constant">2</span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">))</span> <span class="Delimiter">(</span>prn <span class="Constant">"F - calling a user-defined function runs its instructions exactly once"</span><span class="Delimiter">))</span> <span class="CommentedCode">;? (quit)</span> @@ -797,14 +804,14 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"new-fn-reply"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">)))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>test1<span class="Delimiter">))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>test1<span class="Delimiter">))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">1</span> <span class="Constant">2</span> <span class="Constant">3</span> <span class="Constant">3</span> <span class="Constant">4</span><span class="Delimiter">))</span> @@ -814,13 +821,13 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"new-fn-reply-nested"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">`((</span>test1 - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- test2<span class="Delimiter">))</span> - <span class="Delimiter">(</span>test2 - <span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>test1<span class="Delimiter">))))</span> + <span class="Mu"><span class="Delimiter">`((</span>test1</span> + <span class="Mu"><span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> test2<span class="Delimiter">))</span></span></span> + <span class="Mu"><span class="Delimiter">(</span>test2</span> + <span class="Mu"><span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>test1<span class="Delimiter">))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">2</span> <span class="Constant">34</span> <span class="Constant">3</span> <span class="Constant">34</span><span class="Delimiter">))</span> @@ -830,14 +837,14 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"new-fn-reply-once"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">)))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>test1<span class="Delimiter">))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>test1<span class="Delimiter">))))</span></span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is <span class="Constant">4</span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">))</span> <span class="Comment">; last reply sometimes not counted. worth fixing?</span> <span class="Delimiter">(</span>prn <span class="Constant">"F - 'reply' executes instructions exactly once"</span><span class="Delimiter">))</span> <span class="CommentedCode">;? (quit)</span> @@ -845,16 +852,16 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"new-fn-arg-sequential"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">)))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> <span class="Delimiter">)))</span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> @@ -867,16 +874,16 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"new-fn-arg-random-access"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <- arg <span class="Constant">1</span><span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- arg <span class="Constant">0</span><span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">)))</span> <span class="Comment">; should never run</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> arg <span class="Constant">1</span><span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> arg <span class="Constant">0</span><span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">)))</span> <span class="Comment">; should never run</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> <span class="Delimiter">)))</span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> @@ -889,10 +896,10 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"new-fn-arg-status"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <- arg<span class="Delimiter">))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> <span class="Delimiter">)))</span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> @@ -903,11 +910,11 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"new-fn-arg-missing"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <- arg<span class="Delimiter">))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> <span class="Delimiter">)))</span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> @@ -918,11 +925,11 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"new-fn-arg-missing-2"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <- arg<span class="Delimiter">))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> <span class="Delimiter">)))</span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> @@ -933,12 +940,12 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"new-fn-arg-missing-3"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <- arg<span class="Delimiter">))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> <span class="Delimiter">)))</span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> @@ -949,17 +956,17 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"new-fn-arg-missing-3"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 + <span class="Mu"><span class="Delimiter">'((</span>test1</span> <span class="Comment">; if given two args, adds them; if given one arg, increments</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Error">{</span> begin - <span class="Delimiter">(</span>break-if <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Error">}</span> - <span class="Delimiter">((</span><span class="Constant">7</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">)))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">(</span>break-if <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">7</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">(</span>test1 <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> <span class="Delimiter">)))</span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> @@ -972,16 +979,16 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"new-fn-reply-oarg"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">6</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">6</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">)))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- test1 <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">6</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">6</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> test1 <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)))))</span></span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">1</span> <span class="Constant">2</span> <span class="Constant">3</span> <span class="Constant">3</span> <span class="Constant">4</span> @@ -992,16 +999,16 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"new-fn-reply-oarg-multiple"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">6</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">6</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">)))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">7</span> integer<span class="Delimiter">)</span> <- test1 <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">6</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">6</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">7</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> test1 <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)))))</span></span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">1</span> <span class="Constant">2</span> <span class="Constant">3</span> <span class="Constant">3</span> <span class="Constant">4</span> <span class="Constant">7</span> <span class="Constant">3</span> @@ -1013,12 +1020,12 @@ a { color:#4444ff; } <span class="Comment">; lightweight tool called 'convert-braces' to work in a slightly more</span> <span class="Comment">; convenient format with nested braces:</span> <span class="Comment">;</span> -<span class="Comment">; {</span> +<span class="Mu"><span class="Comment">; {</span></span> <span class="Comment">; some instructions</span> -<span class="Comment">; {</span> +<span class="Mu"><span class="Comment">; {</span></span> <span class="Comment">; more instructions</span> -<span class="Comment">; }</span> -<span class="Comment">; }</span> +<span class="Mu"><span class="Comment">; }</span></span> +<span class="Mu"><span class="Comment">; }</span></span> <span class="Comment">;</span> <span class="Comment">; Braces are just labels, they require no special parsing. The operations</span> <span class="Comment">; 'break' and 'continue' jump to just after the enclosing '}' and '{'</span> @@ -1030,96 +1037,96 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"convert-braces"</span><span class="Delimiter">)</span> -<span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso <span class="Delimiter">(</span>convert-braces <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Error">{</span> begin <span class="Comment">; 'begin' is just a hack because racket turns curlies into parens</span> - <span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <- neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>break-if <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Error">}</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)))</span> - <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <- neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>jump-if <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)))</span> +<span class="Mu"><span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso <span class="Delimiter">(</span>convert-braces <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">{</span> begin <span class="Comment">; 'begin' is just a hack because racket turns curlies into parens</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>break-if <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>jump-if <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)))</span></span> <span class="Delimiter">(</span>prn <span class="Constant">"F - convert-braces replaces break-if with a jump-if to after the next close curly"</span><span class="Delimiter">))</span> <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"convert-braces-empty-block"</span><span class="Delimiter">)</span> -<span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso <span class="Delimiter">(</span>convert-braces <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Error">{</span> begin - <span class="Delimiter">(</span>break<span class="Delimiter">)</span> - <span class="Error">}</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)))</span> - <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>jump <span class="Delimiter">(</span><span class="Constant">0</span> offset<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)))</span> +<span class="Mu"><span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso <span class="Delimiter">(</span>convert-braces <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">(</span>break<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>jump <span class="Delimiter">(</span><span class="Constant">0</span> offset<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)))</span></span> <span class="Delimiter">(</span>prn <span class="Constant">"F - convert-braces works for degenerate blocks"</span><span class="Delimiter">))</span> <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"convert-braces-nested-break"</span><span class="Delimiter">)</span> -<span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso <span class="Delimiter">(</span>convert-braces <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Error">{</span> begin - <span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <- neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>break-if <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">))</span> - <span class="Error">{</span> begin - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Error">}</span> - <span class="Error">}</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)))</span> - <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <- neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>jump-if <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)))</span> +<span class="Mu"><span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso <span class="Delimiter">(</span>convert-braces <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>break-if <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>jump-if <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> offset<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)))</span></span> <span class="Delimiter">(</span>prn <span class="Constant">"F - convert-braces balances curlies when converting break"</span><span class="Delimiter">))</span> <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"convert-braces-nested-continue"</span><span class="Delimiter">)</span> -<span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso <span class="Delimiter">(</span>convert-braces <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Error">{</span> begin - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Error">{</span> begin - <span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <- neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> integer<span class="Delimiter">))</span> - <span class="Error">}</span> - <span class="Delimiter">(</span>continue-if <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Error">}</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)))</span> - <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <- neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>jump-if <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">-3</span> offset<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">)))</span> +<span class="Mu"><span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso <span class="Delimiter">(</span>convert-braces <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Delimiter">(</span>continue-if <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>jump-if <span class="Delimiter">(</span><span class="Constant">4</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">-3</span> offset<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">)))</span></span> <span class="Delimiter">(</span>prn <span class="Constant">"F - convert-braces balances curlies when converting continue"</span><span class="Delimiter">))</span> <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"continue"</span><span class="Delimiter">)</span> <span class="CommentedCode">;? (set dump-trace*)</span> -<span class="Delimiter">(</span>add-fns <span class="Delimiter">`((</span>main <span class="Delimiter">,@(</span>convert-braces <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Error">{</span> begin - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <- neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>continue-if <span class="Delimiter">(</span><span class="Constant">3</span> boolean<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Error">}</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">))))))</span> +<span class="Mu"><span class="Delimiter">(</span>add-fns <span class="Delimiter">`((</span>main <span class="Delimiter">,@(</span>convert-braces <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>continue-if <span class="Delimiter">(</span><span class="Constant">3</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">))))))</span></span> <span class="CommentedCode">;? (each stmt function*!main</span> <span class="CommentedCode">;? (prn stmt))</span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> @@ -1133,17 +1140,17 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"continue-nested"</span><span class="Delimiter">)</span> <span class="CommentedCode">;? (set dump-trace*)</span> -<span class="Delimiter">(</span>add-fns <span class="Delimiter">`((</span>main <span class="Delimiter">,@(</span>convert-braces <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">1</span> literal<span class="Delimiter">))</span> - <span class="Error">{</span> begin - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Error">{</span> begin - <span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <- neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Error">}</span> - <span class="Delimiter">(</span>continue-if <span class="Delimiter">(</span><span class="Constant">3</span> boolean<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Error">}</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">))))))</span> +<span class="Mu"><span class="Delimiter">(</span>add-fns <span class="Delimiter">`((</span>main <span class="Delimiter">,@(</span>convert-braces <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">1</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Delimiter">(</span>continue-if <span class="Delimiter">(</span><span class="Constant">3</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">))))))</span></span> <span class="CommentedCode">;? (each stmt function*!main</span> <span class="CommentedCode">;? (prn stmt))</span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> @@ -1153,17 +1160,17 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"continue-fail"</span><span class="Delimiter">)</span> -<span class="Delimiter">(</span>add-fns <span class="Delimiter">`((</span>main <span class="Delimiter">,@(</span>convert-braces <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">2</span> literal<span class="Delimiter">))</span> - <span class="Error">{</span> begin - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Error">{</span> begin - <span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <- neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span> - <span class="Error">}</span> - <span class="Delimiter">(</span>continue-if <span class="Delimiter">(</span><span class="Constant">3</span> boolean<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Error">}</span> - <span class="Delimiter">(</span>reply<span class="Delimiter">))))))</span> +<span class="Mu"><span class="Delimiter">(</span>add-fns <span class="Delimiter">`((</span>main <span class="Delimiter">,@(</span>convert-braces <span class="Delimiter">'(((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">2</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> neq <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Delimiter">(</span>continue-if <span class="Delimiter">(</span><span class="Constant">3</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply<span class="Delimiter">))))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory* <span class="Delimiter">(</span>obj <span class="Constant">1</span> <span class="Constant">4</span> <span class="Constant">2</span> <span class="Constant">4</span> <span class="Constant">3</span> nil <span class="Constant">4</span> <span class="Constant">34</span><span class="Delimiter">))</span> @@ -1176,21 +1183,21 @@ a { color:#4444ff; } <span class="Delimiter">(</span>new-trace <span class="Constant">"dispatch-clause"</span><span class="Delimiter">)</span> <span class="CommentedCode">;? (set dump-trace*)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">4</span> tagged-value-address<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Error">{</span> begin - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <- maybe-coerce <span class="Delimiter">(</span><span class="Constant">4</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>break-unless <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">7</span> tagged-value-address<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">8</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">9</span> boolean<span class="Delimiter">)</span> <- maybe-coerce <span class="Delimiter">(</span><span class="Constant">7</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">9</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">8</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">9</span> integer<span class="Delimiter">))</span> - <span class="Error">}</span> - <span class="Delimiter">(</span>reply <span class="Delimiter">(</span>nil literal<span class="Delimiter">)))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">((</span><span class="Constant">1</span> tagged-value-address<span class="Delimiter">)</span> <- new-tagged-value <span class="Delimiter">(</span>integer literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">)</span> <- new-tagged-value <span class="Delimiter">(</span>integer literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <- test1 <span class="Delimiter">(</span><span class="Constant">1</span> tagged-value-address<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> maybe-coerce <span class="Delimiter">(</span><span class="Constant">4</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>break-unless <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">7</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">8</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">9</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> maybe-coerce <span class="Delimiter">(</span><span class="Constant">7</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">9</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">8</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">9</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="MuConstant">nil</span> literal<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> new-tagged-value <span class="Delimiter">(</span>integer literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> new-tagged-value <span class="Delimiter">(</span>integer literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> test1 <span class="Delimiter">(</span><span class="Constant">1</span> tagged-value-address<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">)))))</span></span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~is memory*.3 <span class="Constant">37</span><span class="Delimiter">)</span> @@ -1203,29 +1210,29 @@ a { color:#4444ff; } <span class="Delimiter">(</span>new-trace <span class="Constant">"dispatch-multiple-clauses"</span><span class="Delimiter">)</span> <span class="CommentedCode">;? (set dump-trace*)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">4</span> tagged-value-address<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Error">{</span> begin - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <- maybe-coerce <span class="Delimiter">(</span><span class="Constant">4</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>break-unless <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">7</span> tagged-value-address<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">8</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">9</span> boolean<span class="Delimiter">)</span> <- maybe-coerce <span class="Delimiter">(</span><span class="Constant">7</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">9</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">8</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">9</span> integer<span class="Delimiter">))</span> - <span class="Error">}</span> - <span class="Error">{</span> begin - <span class="Delimiter">((</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <- maybe-coerce <span class="Delimiter">(</span><span class="Constant">4</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>boolean literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>break-unless <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">7</span> tagged-value-address<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">8</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">9</span> boolean<span class="Delimiter">)</span> <- maybe-coerce <span class="Delimiter">(</span><span class="Constant">7</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>boolean literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">9</span> boolean<span class="Delimiter">)</span> <- or <span class="Delimiter">(</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">8</span> boolean<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">9</span> boolean<span class="Delimiter">))</span> - <span class="Error">}</span> - <span class="Delimiter">(</span>reply <span class="Delimiter">(</span>nil literal<span class="Delimiter">)))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">((</span><span class="Constant">1</span> tagged-value-address<span class="Delimiter">)</span> <- new-tagged-value <span class="Delimiter">(</span>boolean literal<span class="Delimiter">)</span> <span class="Delimiter">(</span>t literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">)</span> <- new-tagged-value <span class="Delimiter">(</span>boolean literal<span class="Delimiter">)</span> <span class="Delimiter">(</span>nil literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <- test1 <span class="Delimiter">(</span><span class="Constant">1</span> tagged-value-address<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> maybe-coerce <span class="Delimiter">(</span><span class="Constant">4</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>break-unless <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">7</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">8</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">9</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> maybe-coerce <span class="Delimiter">(</span><span class="Constant">7</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">9</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">8</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">9</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> maybe-coerce <span class="Delimiter">(</span><span class="Constant">4</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>boolean literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>break-unless <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">7</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">8</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">9</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> maybe-coerce <span class="Delimiter">(</span><span class="Constant">7</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>boolean literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">9</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> or <span class="Delimiter">(</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">8</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">9</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="MuConstant">nil</span> literal<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> new-tagged-value <span class="Delimiter">(</span>boolean literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">t</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> new-tagged-value <span class="Delimiter">(</span>boolean literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">nil</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> test1 <span class="Delimiter">(</span><span class="Constant">1</span> tagged-value-address<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">)))))</span></span></span> <span class="CommentedCode">;? (each stmt function*!test-fn</span> <span class="CommentedCode">;? (prn " " stmt))</span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> @@ -1238,32 +1245,32 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"dispatch-multiple-calls"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>test1 - <span class="Delimiter">((</span><span class="Constant">4</span> tagged-value-address<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Error">{</span> begin - <span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <- maybe-coerce <span class="Delimiter">(</span><span class="Constant">4</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>break-unless <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">7</span> tagged-value-address<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">8</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">9</span> boolean<span class="Delimiter">)</span> <- maybe-coerce <span class="Delimiter">(</span><span class="Constant">7</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">9</span> integer<span class="Delimiter">)</span> <- add <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">8</span> integer<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">9</span> integer<span class="Delimiter">))</span> - <span class="Error">}</span> - <span class="Error">{</span> begin - <span class="Delimiter">((</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <- maybe-coerce <span class="Delimiter">(</span><span class="Constant">4</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>boolean literal<span class="Delimiter">))</span> - <span class="Delimiter">(</span>break-unless <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">7</span> tagged-value-address<span class="Delimiter">)</span> <- arg<span class="Delimiter">)</span> - <span class="Delimiter">((</span><span class="Constant">8</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">9</span> boolean<span class="Delimiter">)</span> <- maybe-coerce <span class="Delimiter">(</span><span class="Constant">7</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>boolean literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">9</span> boolean<span class="Delimiter">)</span> <- or <span class="Delimiter">(</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">8</span> boolean<span class="Delimiter">))</span> - <span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">9</span> boolean<span class="Delimiter">))</span> - <span class="Error">}</span> - <span class="Delimiter">(</span>reply <span class="Delimiter">(</span>nil literal<span class="Delimiter">)))</span> - <span class="Delimiter">(</span>main - <span class="Delimiter">((</span><span class="Constant">1</span> tagged-value-address<span class="Delimiter">)</span> <- new-tagged-value <span class="Delimiter">(</span>boolean literal<span class="Delimiter">)</span> <span class="Delimiter">(</span>t literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">)</span> <- new-tagged-value <span class="Delimiter">(</span>boolean literal<span class="Delimiter">)</span> <span class="Delimiter">(</span>nil literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <- test1 <span class="Delimiter">(</span><span class="Constant">1</span> tagged-value-address<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">10</span> tagged-value-address<span class="Delimiter">)</span> <- new-tagged-value <span class="Delimiter">(</span>integer literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">34</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">11</span> tagged-value-address<span class="Delimiter">)</span> <- new-tagged-value <span class="Delimiter">(</span>integer literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">12</span> integer<span class="Delimiter">)</span> <- test1 <span class="Delimiter">(</span><span class="Constant">10</span> tagged-value-address<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">11</span> tagged-value-address<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>test1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">4</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> maybe-coerce <span class="Delimiter">(</span><span class="Constant">4</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>break-unless <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">7</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">8</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">9</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> maybe-coerce <span class="Delimiter">(</span><span class="Constant">7</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>integer literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">9</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> add <span class="Delimiter">(</span><span class="Constant">5</span> integer<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">8</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">9</span> integer<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Error">{</span> begin</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> maybe-coerce <span class="Delimiter">(</span><span class="Constant">4</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>boolean literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>break-unless <span class="Delimiter">(</span><span class="Constant">6</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">7</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> arg<span class="Delimiter">)</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">8</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">9</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> maybe-coerce <span class="Delimiter">(</span><span class="Constant">7</span> tagged-value-address deref<span class="Delimiter">)</span> <span class="Delimiter">(</span>boolean literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">9</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> or <span class="Delimiter">(</span><span class="Constant">5</span> boolean<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">8</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="Constant">9</span> boolean<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Error">}</span></span> + <span class="Mu"><span class="Delimiter">(</span>reply <span class="Delimiter">(</span><span class="MuConstant">nil</span> literal<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">(</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> new-tagged-value <span class="Delimiter">(</span>boolean literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">t</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> new-tagged-value <span class="Delimiter">(</span>boolean literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">nil</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Mu"><span class="Delimiter">((</span><span class="Constant">3</span> boolean<span class="Delimiter">)</span> <span class="Op"><-</span> test1 <span class="Delimiter">(</span><span class="Constant">1</span> tagged-value-address<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">2</span> tagged-value-address<span class="Delimiter">))</span></span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">10</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> new-tagged-value <span class="Delimiter">(</span>integer literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">34</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">11</span> tagged-value-address<span class="Delimiter">)</span> <span class="Op"><-</span> new-tagged-value <span class="Delimiter">(</span>integer literal<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Mu"><span class="Delimiter">((</span><span class="Constant">12</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> test1 <span class="Delimiter">(</span><span class="Constant">10</span> tagged-value-address<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">11</span> tagged-value-address<span class="Delimiter">)))))</span></span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~and <span class="Delimiter">(</span>is memory*.3 t<span class="Delimiter">)</span> <span class="Delimiter">(</span>is memory*.12 <span class="Constant">37</span><span class="Delimiter">))</span> @@ -1275,8 +1282,8 @@ a { color:#4444ff; } <span class="Delimiter">(</span>new-trace <span class="Constant">"new-primitive"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Normal">let</span> before Memory-in-use-until <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>main - <span class="Delimiter">((</span><span class="Constant">1</span> integer-address<span class="Delimiter">)</span> <- new <span class="Delimiter">(</span>integer type<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer-address<span class="Delimiter">)</span> <span class="Op"><-</span> new <span class="Delimiter">(</span>integer type<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory*.1 before<span class="Delimiter">)</span> @@ -1288,8 +1295,8 @@ a { color:#4444ff; } <span class="Delimiter">(</span>new-trace <span class="Constant">"new-array-literal"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Normal">let</span> before Memory-in-use-until <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>main - <span class="Delimiter">((</span><span class="Constant">1</span> type-array-address<span class="Delimiter">)</span> <- new <span class="Delimiter">(</span>type-array type<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">5</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> type-array-address<span class="Delimiter">)</span> <span class="Op"><-</span> new <span class="Delimiter">(</span>type-array type<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="MuConstant">5</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory*.1 before<span class="Delimiter">)</span> @@ -1301,9 +1308,9 @@ a { color:#4444ff; } <span class="Delimiter">(</span>new-trace <span class="Constant">"new-array-direct"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Normal">let</span> before Memory-in-use-until <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>main - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">5</span> literal<span class="Delimiter">))</span> - <span class="Delimiter">((</span><span class="Constant">2</span> type-array-address<span class="Delimiter">)</span> <- new <span class="Delimiter">(</span>type-array type<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>main</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">5</span> literal<span class="Delimiter">))</span></span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> type-array-address<span class="Delimiter">)</span> <span class="Op"><-</span> new <span class="Delimiter">(</span>type-array type<span class="Delimiter">)</span> <span class="Delimiter">(</span><span class="Constant">1</span> integer<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span>run <span class="Delimiter">'</span>main<span class="Delimiter">)</span> <span class="CommentedCode">;? (prn memory*)</span> <span class="Delimiter">(</span><span class="Normal">if</span> <span class="Delimiter">(</span>~iso memory*.2 before<span class="Delimiter">)</span> @@ -1321,10 +1328,10 @@ a { color:#4444ff; } <span class="Delimiter">(</span>reset<span class="Delimiter">)</span> <span class="Delimiter">(</span>new-trace <span class="Constant">"scheduler"</span><span class="Delimiter">)</span> <span class="Delimiter">(</span>add-fns - <span class="Delimiter">'((</span>f1 - <span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">3</span> literal<span class="Delimiter">)))</span> - <span class="Delimiter">(</span>f2 - <span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <- copy <span class="Delimiter">(</span><span class="Constant">4</span> literal<span class="Delimiter">)))))</span> + <span class="Mu"><span class="Delimiter">'((</span>f1</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">1</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">3</span> literal<span class="Delimiter">)))</span></span> + <span class="Mu"><span class="Delimiter">(</span>f2</span> + <span class="Mu"><span class="Delimiter">((</span><span class="Constant">2</span> integer<span class="Delimiter">)</span> <span class="Op"><-</span> copy <span class="Delimiter">(</span><span class="MuConstant">4</span> literal<span class="Delimiter">)))))</span></span> <span class="Delimiter">(</span><span class="Normal">let</span> ninsts <span class="Delimiter">(</span>run <span class="Delimiter">'</span>f1 <span class="Delimiter">'</span>f2<span class="Delimiter">)</span> <span class="Delimiter">(</span>when <span class="Delimiter">(</span>~iso <span class="Constant">2</span> ninsts<span class="Delimiter">)</span> <span class="Delimiter">(</span>prn <span class="Constant">"F - scheduler didn't run the right number of instructions: "</span> ninsts<span class="Delimiter">)))</span> |