about summary refs log tree commit diff stats
path: root/cpp/.traces
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-04-20 10:25:02 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-04-20 10:25:02 -0700
commited84cba28ab0a00fca80807228afd71d3a00ac44 (patch)
tree5a8cacf710128b14f3b65592a2466f5e43515363 /cpp/.traces
parent11fa4fe1f51f2762c3c33dd33794096842d2707a (diff)
downloadmu-ed84cba28ab0a00fca80807228afd71d3a00ac44.tar.gz
1109 - interpolate strings
Diffstat (limited to 'cpp/.traces')
-rw-r--r--cpp/.traces/interpolate-at-end760
-rw-r--r--cpp/.traces/interpolate-at-start741
-rw-r--r--cpp/.traces/interpolate-works577
3 files changed, 2078 insertions, 0 deletions
diff --git a/cpp/.traces/interpolate-at-end b/cpp/.traces/interpolate-at-end
new file mode 100644
index 00000000..5a59322e
--- /dev/null
+++ b/cpp/.traces/interpolate-at-end
@@ -0,0 +1,760 @@
+parse/0: instruction: 35
+parse/0:   ingredient: {name: "hello, _", value: 0, type: 0, properties: ["hello, _": "literal-string"]}
+parse/0:   product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}
+parse/0: instruction: 35
+parse/0:   ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]}
+parse/0:   product: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]}
+parse/0: instruction: 107
+parse/0:   ingredient: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}
+parse/0:   ingredient: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]}
+parse/0:   product: {name: "3", value: 0, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]}
+parse/0: instruction: 1
+parse/0:   ingredient: {name: "3", value: 0, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]}
+parse/0:   product: {name: "4", value: 0, type: 5-4, properties: ["4": "array":"character", "raw": ]}
+new/0: hello, _ -> 0
+new/0: abc -> 0
+after-brace/0: recipe test-interpolate-at-end
+after-brace/0: new ...
+after-brace/0: new ...
+after-brace/0: interpolate ...
+after-brace/0: copy ...
+run/0: instruction test-interpolate-at-end/0
+mem/0: storing 1000 in location 1
+run/0: instruction test-interpolate-at-end/1
+mem/0: storing 1009 in location 2
+run/0: instruction test-interpolate-at-end/2
+mem/0: location 1 is 1000
+mem/0: location 2 is 1009
+run/0: instruction interpolate/0
+mem/0: new alloc: 1013
+mem/0: array size is 60
+run/0: instruction interpolate/1
+run/0: product 0 is 1000
+mem/0: storing 1000 in location 1015
+run/0: instruction interpolate/2
+mem/0: location 1015 is 1000
+mem/0: storing 8 in location 1016
+run/0: instruction interpolate/3
+run/0: ingredient 0 is tem-len
+mem/0: location 1016 is 8
+mem/0: storing 8 in location 1017
+run/0: instruction interpolate/5
+run/0: product 0 is 1009
+mem/0: storing 1009 in location 1018
+mem/0: storing 1 in location 1019
+run/0: instruction interpolate/6
+mem/0: location 1019 is 1
+run/0: ingredient 0 is 1
+run/0: jump-unless fell through
+run/0: instruction interpolate/7
+mem/0: location 1018 is 1009
+mem/0: storing 3 in location 1020
+run/0: instruction interpolate/8
+run/0: ingredient 0 is result-len
+mem/0: location 1017 is 8
+run/0: ingredient 1 is a-len
+mem/0: location 1020 is 3
+run/0: product 0 is 11
+mem/0: storing 11 in location 1017
+run/0: instruction interpolate/9
+run/0: ingredient 0 is result-len
+mem/0: location 1017 is 11
+run/0: ingredient 1 is 1
+run/0: product 0 is 10
+mem/0: storing 10 in location 1017
+run/0: instruction interpolate/10
+run/0: ingredient 0 is -6
+run/0: pc now 4
+run/0: instruction interpolate/5
+mem/0: storing 0 in location 1019
+run/0: instruction interpolate/6
+mem/0: location 1019 is 0
+run/0: ingredient 0 is 0
+run/0: ingredient 1 is 
+run/0: jumping to instruction 11
+run/0: instruction interpolate/12
+run/0: instruction interpolate/13
+run/0: product 0 is 1000
+run/0: instruction interpolate/14
+mem/0: new alloc: 1073
+mem/0: storing 1073 in location 1021
+mem/0: location 1017 is 10
+mem/0: array size is 10
+run/0: instruction interpolate/15
+run/0: ingredient 0 is 0
+mem/0: storing 0 in location 1022
+run/0: instruction interpolate/16
+run/0: ingredient 0 is 0
+mem/0: storing 0 in location 1023
+run/0: instruction interpolate/18
+run/0: product 0 is 1009
+mem/0: storing 1009 in location 1018
+mem/0: storing 1 in location 1019
+run/0: instruction interpolate/19
+mem/0: location 1019 is 1
+run/0: ingredient 0 is 1
+run/0: jump-unless fell through
+run/0: instruction interpolate/21
+run/0: ingredient 0 is i
+mem/0: location 1023 is 0
+run/0: ingredient 1 is tem-len
+mem/0: location 1016 is 8
+run/0: product 0 is 0
+mem/0: storing 0 in location 1024
+run/0: instruction interpolate/22
+mem/0: location 1024 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/23
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1015 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1023 is 0
+run/0: address to copy is 1001
+run/0: its type is 4
+mem/0: location 1001 is 104
+run/0: product 0 is 104
+mem/0: storing 104 in location 1025
+run/0: instruction interpolate/24
+run/0: ingredient 0 is in
+mem/0: location 1025 is 104
+run/0: ingredient 1 is 95
+run/0: product 0 is 0
+mem/0: storing 0 in location 1026
+run/0: instruction interpolate/25
+mem/0: location 1026 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/26
+run/0: ingredient 0 is result
+mem/0: location 1021 is 1073
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1022 is 0
+run/0: address to copy is 1074
+run/0: product 0 is 1074
+mem/0: storing 1074 in location 1027
+run/0: instruction interpolate/27
+run/0: ingredient 0 is in
+mem/0: location 1025 is 104
+mem/0: location 1027 is 1074
+mem/0: storing 104 in location 1074
+run/0: instruction interpolate/28
+run/0: ingredient 0 is i
+mem/0: location 1023 is 0
+run/0: ingredient 1 is 1
+run/0: product 0 is 1
+mem/0: storing 1 in location 1023
+run/0: instruction interpolate/29
+run/0: ingredient 0 is result-idx
+mem/0: location 1022 is 0
+run/0: ingredient 1 is 1
+run/0: product 0 is 1
+mem/0: storing 1 in location 1022
+run/0: instruction interpolate/30
+run/0: ingredient 0 is -10
+run/0: pc now 20
+run/0: instruction interpolate/21
+run/0: ingredient 0 is i
+mem/0: location 1023 is 1
+run/0: ingredient 1 is tem-len
+mem/0: location 1016 is 8
+run/0: product 0 is 0
+mem/0: storing 0 in location 1024
+run/0: instruction interpolate/22
+mem/0: location 1024 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/23
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1015 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1023 is 1
+run/0: address to copy is 1002
+run/0: its type is 4
+mem/0: location 1002 is 101
+run/0: product 0 is 101
+mem/0: storing 101 in location 1025
+run/0: instruction interpolate/24
+run/0: ingredient 0 is in
+mem/0: location 1025 is 101
+run/0: ingredient 1 is 95
+run/0: product 0 is 0
+mem/0: storing 0 in location 1026
+run/0: instruction interpolate/25
+mem/0: location 1026 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/26
+run/0: ingredient 0 is result
+mem/0: location 1021 is 1073
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1022 is 1
+run/0: address to copy is 1075
+run/0: product 0 is 1075
+mem/0: storing 1075 in location 1027
+run/0: instruction interpolate/27
+run/0: ingredient 0 is in
+mem/0: location 1025 is 101
+mem/0: location 1027 is 1075
+mem/0: storing 101 in location 1075
+run/0: instruction interpolate/28
+run/0: ingredient 0 is i
+mem/0: location 1023 is 1
+run/0: ingredient 1 is 1
+run/0: product 0 is 2
+mem/0: storing 2 in location 1023
+run/0: instruction interpolate/29
+run/0: ingredient 0 is result-idx
+mem/0: location 1022 is 1
+run/0: ingredient 1 is 1
+run/0: product 0 is 2
+mem/0: storing 2 in location 1022
+run/0: instruction interpolate/30
+run/0: ingredient 0 is -10
+run/0: pc now 20
+run/0: instruction interpolate/21
+run/0: ingredient 0 is i
+mem/0: location 1023 is 2
+run/0: ingredient 1 is tem-len
+mem/0: location 1016 is 8
+run/0: product 0 is 0
+mem/0: storing 0 in location 1024
+run/0: instruction interpolate/22
+mem/0: location 1024 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/23
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1015 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1023 is 2
+run/0: address to copy is 1003
+run/0: its type is 4
+mem/0: location 1003 is 108
+run/0: product 0 is 108
+mem/0: storing 108 in location 1025
+run/0: instruction interpolate/24
+run/0: ingredient 0 is in
+mem/0: location 1025 is 108
+run/0: ingredient 1 is 95
+run/0: product 0 is 0
+mem/0: storing 0 in location 1026
+run/0: instruction interpolate/25
+mem/0: location 1026 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/26
+run/0: ingredient 0 is result
+mem/0: location 1021 is 1073
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1022 is 2
+run/0: address to copy is 1076
+run/0: product 0 is 1076
+mem/0: storing 1076 in location 1027
+run/0: instruction interpolate/27
+run/0: ingredient 0 is in
+mem/0: location 1025 is 108
+mem/0: location 1027 is 1076
+mem/0: storing 108 in location 1076
+run/0: instruction interpolate/28
+run/0: ingredient 0 is i
+mem/0: location 1023 is 2
+run/0: ingredient 1 is 1
+run/0: product 0 is 3
+mem/0: storing 3 in location 1023
+run/0: instruction interpolate/29
+run/0: ingredient 0 is result-idx
+mem/0: location 1022 is 2
+run/0: ingredient 1 is 1
+run/0: product 0 is 3
+mem/0: storing 3 in location 1022
+run/0: instruction interpolate/30
+run/0: ingredient 0 is -10
+run/0: pc now 20
+run/0: instruction interpolate/21
+run/0: ingredient 0 is i
+mem/0: location 1023 is 3
+run/0: ingredient 1 is tem-len
+mem/0: location 1016 is 8
+run/0: product 0 is 0
+mem/0: storing 0 in location 1024
+run/0: instruction interpolate/22
+mem/0: location 1024 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/23
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1015 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1023 is 3
+run/0: address to copy is 1004
+run/0: its type is 4
+mem/0: location 1004 is 108
+run/0: product 0 is 108
+mem/0: storing 108 in location 1025
+run/0: instruction interpolate/24
+run/0: ingredient 0 is in
+mem/0: location 1025 is 108
+run/0: ingredient 1 is 95
+run/0: product 0 is 0
+mem/0: storing 0 in location 1026
+run/0: instruction interpolate/25
+mem/0: location 1026 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/26
+run/0: ingredient 0 is result
+mem/0: location 1021 is 1073
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1022 is 3
+run/0: address to copy is 1077
+run/0: product 0 is 1077
+mem/0: storing 1077 in location 1027
+run/0: instruction interpolate/27
+run/0: ingredient 0 is in
+mem/0: location 1025 is 108
+mem/0: location 1027 is 1077
+mem/0: storing 108 in location 1077
+run/0: instruction interpolate/28
+run/0: ingredient 0 is i
+mem/0: location 1023 is 3
+run/0: ingredient 1 is 1
+run/0: product 0 is 4
+mem/0: storing 4 in location 1023
+run/0: instruction interpolate/29
+run/0: ingredient 0 is result-idx
+mem/0: location 1022 is 3
+run/0: ingredient 1 is 1
+run/0: product 0 is 4
+mem/0: storing 4 in location 1022
+run/0: instruction interpolate/30
+run/0: ingredient 0 is -10
+run/0: pc now 20
+run/0: instruction interpolate/21
+run/0: ingredient 0 is i
+mem/0: location 1023 is 4
+run/0: ingredient 1 is tem-len
+mem/0: location 1016 is 8
+run/0: product 0 is 0
+mem/0: storing 0 in location 1024
+run/0: instruction interpolate/22
+mem/0: location 1024 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/23
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1015 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1023 is 4
+run/0: address to copy is 1005
+run/0: its type is 4
+mem/0: location 1005 is 111
+run/0: product 0 is 111
+mem/0: storing 111 in location 1025
+run/0: instruction interpolate/24
+run/0: ingredient 0 is in
+mem/0: location 1025 is 111
+run/0: ingredient 1 is 95
+run/0: product 0 is 0
+mem/0: storing 0 in location 1026
+run/0: instruction interpolate/25
+mem/0: location 1026 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/26
+run/0: ingredient 0 is result
+mem/0: location 1021 is 1073
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1022 is 4
+run/0: address to copy is 1078
+run/0: product 0 is 1078
+mem/0: storing 1078 in location 1027
+run/0: instruction interpolate/27
+run/0: ingredient 0 is in
+mem/0: location 1025 is 111
+mem/0: location 1027 is 1078
+mem/0: storing 111 in location 1078
+run/0: instruction interpolate/28
+run/0: ingredient 0 is i
+mem/0: location 1023 is 4
+run/0: ingredient 1 is 1
+run/0: product 0 is 5
+mem/0: storing 5 in location 1023
+run/0: instruction interpolate/29
+run/0: ingredient 0 is result-idx
+mem/0: location 1022 is 4
+run/0: ingredient 1 is 1
+run/0: product 0 is 5
+mem/0: storing 5 in location 1022
+run/0: instruction interpolate/30
+run/0: ingredient 0 is -10
+run/0: pc now 20
+run/0: instruction interpolate/21
+run/0: ingredient 0 is i
+mem/0: location 1023 is 5
+run/0: ingredient 1 is tem-len
+mem/0: location 1016 is 8
+run/0: product 0 is 0
+mem/0: storing 0 in location 1024
+run/0: instruction interpolate/22
+mem/0: location 1024 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/23
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1015 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1023 is 5
+run/0: address to copy is 1006
+run/0: its type is 4
+mem/0: location 1006 is 44
+run/0: product 0 is 44
+mem/0: storing 44 in location 1025
+run/0: instruction interpolate/24
+run/0: ingredient 0 is in
+mem/0: location 1025 is 44
+run/0: ingredient 1 is 95
+run/0: product 0 is 0
+mem/0: storing 0 in location 1026
+run/0: instruction interpolate/25
+mem/0: location 1026 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/26
+run/0: ingredient 0 is result
+mem/0: location 1021 is 1073
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1022 is 5
+run/0: address to copy is 1079
+run/0: product 0 is 1079
+mem/0: storing 1079 in location 1027
+run/0: instruction interpolate/27
+run/0: ingredient 0 is in
+mem/0: location 1025 is 44
+mem/0: location 1027 is 1079
+mem/0: storing 44 in location 1079
+run/0: instruction interpolate/28
+run/0: ingredient 0 is i
+mem/0: location 1023 is 5
+run/0: ingredient 1 is 1
+run/0: product 0 is 6
+mem/0: storing 6 in location 1023
+run/0: instruction interpolate/29
+run/0: ingredient 0 is result-idx
+mem/0: location 1022 is 5
+run/0: ingredient 1 is 1
+run/0: product 0 is 6
+mem/0: storing 6 in location 1022
+run/0: instruction interpolate/30
+run/0: ingredient 0 is -10
+run/0: pc now 20
+run/0: instruction interpolate/21
+run/0: ingredient 0 is i
+mem/0: location 1023 is 6
+run/0: ingredient 1 is tem-len
+mem/0: location 1016 is 8
+run/0: product 0 is 0
+mem/0: storing 0 in location 1024
+run/0: instruction interpolate/22
+mem/0: location 1024 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/23
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1015 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1023 is 6
+run/0: address to copy is 1007
+run/0: its type is 4
+mem/0: location 1007 is 32
+run/0: product 0 is 32
+mem/0: storing 32 in location 1025
+run/0: instruction interpolate/24
+run/0: ingredient 0 is in
+mem/0: location 1025 is 32
+run/0: ingredient 1 is 95
+run/0: product 0 is 0
+mem/0: storing 0 in location 1026
+run/0: instruction interpolate/25
+mem/0: location 1026 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/26
+run/0: ingredient 0 is result
+mem/0: location 1021 is 1073
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1022 is 6
+run/0: address to copy is 1080
+run/0: product 0 is 1080
+mem/0: storing 1080 in location 1027
+run/0: instruction interpolate/27
+run/0: ingredient 0 is in
+mem/0: location 1025 is 32
+mem/0: location 1027 is 1080
+mem/0: storing 32 in location 1080
+run/0: instruction interpolate/28
+run/0: ingredient 0 is i
+mem/0: location 1023 is 6
+run/0: ingredient 1 is 1
+run/0: product 0 is 7
+mem/0: storing 7 in location 1023
+run/0: instruction interpolate/29
+run/0: ingredient 0 is result-idx
+mem/0: location 1022 is 6
+run/0: ingredient 1 is 1
+run/0: product 0 is 7
+mem/0: storing 7 in location 1022
+run/0: instruction interpolate/30
+run/0: ingredient 0 is -10
+run/0: pc now 20
+run/0: instruction interpolate/21
+run/0: ingredient 0 is i
+mem/0: location 1023 is 7
+run/0: ingredient 1 is tem-len
+mem/0: location 1016 is 8
+run/0: product 0 is 0
+mem/0: storing 0 in location 1024
+run/0: instruction interpolate/22
+mem/0: location 1024 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/23
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1015 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1023 is 7
+run/0: address to copy is 1008
+run/0: its type is 4
+mem/0: location 1008 is 95
+run/0: product 0 is 95
+mem/0: storing 95 in location 1025
+run/0: instruction interpolate/24
+run/0: ingredient 0 is in
+mem/0: location 1025 is 95
+run/0: ingredient 1 is 95
+run/0: product 0 is 1
+mem/0: storing 1 in location 1026
+run/0: instruction interpolate/25
+mem/0: location 1026 is 1
+run/0: ingredient 0 is 1
+run/0: ingredient 1 is 
+run/0: jumping to instruction 31
+run/0: instruction interpolate/32
+run/0: ingredient 0 is 0
+mem/0: storing 0 in location 1028
+run/0: instruction interpolate/34
+run/0: ingredient 0 is j
+mem/0: location 1028 is 0
+run/0: ingredient 1 is a-len
+mem/0: location 1020 is 3
+run/0: product 0 is 0
+mem/0: storing 0 in location 1029
+run/0: instruction interpolate/35
+mem/0: location 1029 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/36
+run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}
+mem/0: location 1018 is 1009
+run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]}
+mem/0: location 1028 is 0
+run/0: address to copy is 1010
+run/0: its type is 4
+mem/0: location 1010 is 97
+run/0: product 0 is 97
+mem/0: storing 97 in location 1025
+run/0: instruction interpolate/37
+run/0: ingredient 0 is result
+mem/0: location 1021 is 1073
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1022 is 7
+run/0: address to copy is 1081
+run/0: product 0 is 1081
+mem/0: storing 1081 in location 1027
+run/0: instruction interpolate/38
+run/0: ingredient 0 is in
+mem/0: location 1025 is 97
+mem/0: location 1027 is 1081
+mem/0: storing 97 in location 1081
+run/0: instruction interpolate/39
+run/0: ingredient 0 is j
+mem/0: location 1028 is 0
+run/0: ingredient 1 is 1
+run/0: product 0 is 1
+mem/0: storing 1 in location 1028
+run/0: instruction interpolate/40
+run/0: ingredient 0 is result-idx
+mem/0: location 1022 is 7
+run/0: ingredient 1 is 1
+run/0: product 0 is 8
+mem/0: storing 8 in location 1022
+run/0: instruction interpolate/41
+run/0: ingredient 0 is -8
+run/0: pc now 33
+run/0: instruction interpolate/34
+run/0: ingredient 0 is j
+mem/0: location 1028 is 1
+run/0: ingredient 1 is a-len
+mem/0: location 1020 is 3
+run/0: product 0 is 0
+mem/0: storing 0 in location 1029
+run/0: instruction interpolate/35
+mem/0: location 1029 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/36
+run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}
+mem/0: location 1018 is 1009
+run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]}
+mem/0: location 1028 is 1
+run/0: address to copy is 1011
+run/0: its type is 4
+mem/0: location 1011 is 98
+run/0: product 0 is 98
+mem/0: storing 98 in location 1025
+run/0: instruction interpolate/37
+run/0: ingredient 0 is result
+mem/0: location 1021 is 1073
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1022 is 8
+run/0: address to copy is 1082
+run/0: product 0 is 1082
+mem/0: storing 1082 in location 1027
+run/0: instruction interpolate/38
+run/0: ingredient 0 is in
+mem/0: location 1025 is 98
+mem/0: location 1027 is 1082
+mem/0: storing 98 in location 1082
+run/0: instruction interpolate/39
+run/0: ingredient 0 is j
+mem/0: location 1028 is 1
+run/0: ingredient 1 is 1
+run/0: product 0 is 2
+mem/0: storing 2 in location 1028
+run/0: instruction interpolate/40
+run/0: ingredient 0 is result-idx
+mem/0: location 1022 is 8
+run/0: ingredient 1 is 1
+run/0: product 0 is 9
+mem/0: storing 9 in location 1022
+run/0: instruction interpolate/41
+run/0: ingredient 0 is -8
+run/0: pc now 33
+run/0: instruction interpolate/34
+run/0: ingredient 0 is j
+mem/0: location 1028 is 2
+run/0: ingredient 1 is a-len
+mem/0: location 1020 is 3
+run/0: product 0 is 0
+mem/0: storing 0 in location 1029
+run/0: instruction interpolate/35
+mem/0: location 1029 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/36
+run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}
+mem/0: location 1018 is 1009
+run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]}
+mem/0: location 1028 is 2
+run/0: address to copy is 1012
+run/0: its type is 4
+mem/0: location 1012 is 99
+run/0: product 0 is 99
+mem/0: storing 99 in location 1025
+run/0: instruction interpolate/37
+run/0: ingredient 0 is result
+mem/0: location 1021 is 1073
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1022 is 9
+run/0: address to copy is 1083
+run/0: product 0 is 1083
+mem/0: storing 1083 in location 1027
+run/0: instruction interpolate/38
+run/0: ingredient 0 is in
+mem/0: location 1025 is 99
+mem/0: location 1027 is 1083
+mem/0: storing 99 in location 1083
+run/0: instruction interpolate/39
+run/0: ingredient 0 is j
+mem/0: location 1028 is 2
+run/0: ingredient 1 is 1
+run/0: product 0 is 3
+mem/0: storing 3 in location 1028
+run/0: instruction interpolate/40
+run/0: ingredient 0 is result-idx
+mem/0: location 1022 is 9
+run/0: ingredient 1 is 1
+run/0: product 0 is 10
+mem/0: storing 10 in location 1022
+run/0: instruction interpolate/41
+run/0: ingredient 0 is -8
+run/0: pc now 33
+run/0: instruction interpolate/34
+run/0: ingredient 0 is j
+mem/0: location 1028 is 3
+run/0: ingredient 1 is a-len
+mem/0: location 1020 is 3
+run/0: product 0 is 1
+mem/0: storing 1 in location 1029
+run/0: instruction interpolate/35
+mem/0: location 1029 is 1
+run/0: ingredient 0 is 1
+run/0: ingredient 1 is 
+run/0: jumping to instruction 42
+run/0: instruction interpolate/43
+run/0: ingredient 0 is i
+mem/0: location 1023 is 7
+run/0: ingredient 1 is 1
+run/0: product 0 is 8
+mem/0: storing 8 in location 1023
+run/0: instruction interpolate/44
+run/0: ingredient 0 is -27
+run/0: pc now 17
+run/0: instruction interpolate/18
+mem/0: storing 0 in location 1019
+run/0: instruction interpolate/19
+mem/0: location 1019 is 0
+run/0: ingredient 0 is 0
+run/0: ingredient 1 is 
+run/0: jumping to instruction 45
+run/0: instruction interpolate/47
+run/0: ingredient 0 is i
+mem/0: location 1023 is 8
+run/0: ingredient 1 is tem-len
+mem/0: location 1016 is 8
+run/0: product 0 is 1
+mem/0: storing 1 in location 1024
+run/0: instruction interpolate/48
+mem/0: location 1024 is 1
+run/0: ingredient 0 is 1
+run/0: ingredient 1 is 
+run/0: jumping to instruction 55
+run/0: instruction interpolate/56
+mem/0: location 1021 is 1073
+run/0: result 0 is 1073
+mem/0: storing 1073 in location 3
+run/0: instruction test-interpolate-at-end/3
+run/0: ingredient 0 is 3
+mem/0: location 3 is 1073
+mem/0: location 1073 is 10
+mem/0: location 1074 is 104
+mem/0: location 1075 is 101
+mem/0: location 1076 is 108
+mem/0: location 1077 is 108
+mem/0: location 1078 is 111
+mem/0: location 1079 is 44
+mem/0: location 1080 is 32
+mem/0: location 1081 is 97
+mem/0: location 1082 is 98
+mem/0: location 1083 is 99
+mem/0: storing 10 in location 4
+mem/0: storing 104 in location 5
+mem/0: storing 101 in location 6
+mem/0: storing 108 in location 7
+mem/0: storing 108 in location 8
+mem/0: storing 111 in location 9
+mem/0: storing 44 in location 10
+mem/0: storing 32 in location 11
+mem/0: storing 97 in location 12
+mem/0: storing 98 in location 13
+mem/0: storing 99 in location 14
diff --git a/cpp/.traces/interpolate-at-start b/cpp/.traces/interpolate-at-start
new file mode 100644
index 00000000..23c1d877
--- /dev/null
+++ b/cpp/.traces/interpolate-at-start
@@ -0,0 +1,741 @@
+parse/0: instruction: 35
+parse/0:   ingredient: {name: "_, hello!", value: 0, type: 0, properties: ["_, hello!": "literal-string"]}
+parse/0:   product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}
+parse/0: instruction: 35
+parse/0:   ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]}
+parse/0:   product: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]}
+parse/0: instruction: 107
+parse/0:   ingredient: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}
+parse/0:   ingredient: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]}
+parse/0:   product: {name: "3", value: 0, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]}
+parse/0: instruction: 1
+parse/0:   ingredient: {name: "3", value: 0, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]}
+parse/0:   product: {name: "4", value: 0, type: 5-4, properties: ["4": "array":"character", "raw": ]}
+new/0: _, hello! -> 0
+new/0: abc -> 0
+after-brace/0: recipe test-interpolate-at-start
+after-brace/0: new ...
+after-brace/0: new ...
+after-brace/0: interpolate ...
+after-brace/0: copy ...
+run/0: instruction test-interpolate-at-start/0
+mem/0: storing 1000 in location 1
+run/0: instruction test-interpolate-at-start/1
+mem/0: storing 1010 in location 2
+run/0: instruction test-interpolate-at-start/2
+mem/0: location 1 is 1000
+mem/0: location 2 is 1010
+run/0: instruction interpolate/0
+mem/0: new alloc: 1014
+mem/0: array size is 60
+run/0: instruction interpolate/1
+run/0: product 0 is 1000
+mem/0: storing 1000 in location 1016
+run/0: instruction interpolate/2
+mem/0: location 1016 is 1000
+mem/0: storing 9 in location 1017
+run/0: instruction interpolate/3
+run/0: ingredient 0 is tem-len
+mem/0: location 1017 is 9
+mem/0: storing 9 in location 1018
+run/0: instruction interpolate/5
+run/0: product 0 is 1010
+mem/0: storing 1010 in location 1019
+mem/0: storing 1 in location 1020
+run/0: instruction interpolate/6
+mem/0: location 1020 is 1
+run/0: ingredient 0 is 1
+run/0: jump-unless fell through
+run/0: instruction interpolate/7
+mem/0: location 1019 is 1010
+mem/0: storing 3 in location 1021
+run/0: instruction interpolate/8
+run/0: ingredient 0 is result-len
+mem/0: location 1018 is 9
+run/0: ingredient 1 is a-len
+mem/0: location 1021 is 3
+run/0: product 0 is 12
+mem/0: storing 12 in location 1018
+run/0: instruction interpolate/9
+run/0: ingredient 0 is result-len
+mem/0: location 1018 is 12
+run/0: ingredient 1 is 1
+run/0: product 0 is 11
+mem/0: storing 11 in location 1018
+run/0: instruction interpolate/10
+run/0: ingredient 0 is -6
+run/0: pc now 4
+run/0: instruction interpolate/5
+mem/0: storing 0 in location 1020
+run/0: instruction interpolate/6
+mem/0: location 1020 is 0
+run/0: ingredient 0 is 0
+run/0: ingredient 1 is 
+run/0: jumping to instruction 11
+run/0: instruction interpolate/12
+run/0: instruction interpolate/13
+run/0: product 0 is 1000
+run/0: instruction interpolate/14
+mem/0: new alloc: 1074
+mem/0: storing 1074 in location 1022
+mem/0: location 1018 is 11
+mem/0: array size is 11
+run/0: instruction interpolate/15
+run/0: ingredient 0 is 0
+mem/0: storing 0 in location 1023
+run/0: instruction interpolate/16
+run/0: ingredient 0 is 0
+mem/0: storing 0 in location 1024
+run/0: instruction interpolate/18
+run/0: product 0 is 1010
+mem/0: storing 1010 in location 1019
+mem/0: storing 1 in location 1020
+run/0: instruction interpolate/19
+mem/0: location 1020 is 1
+run/0: ingredient 0 is 1
+run/0: jump-unless fell through
+run/0: instruction interpolate/21
+run/0: ingredient 0 is i
+mem/0: location 1024 is 0
+run/0: ingredient 1 is tem-len
+mem/0: location 1017 is 9
+run/0: product 0 is 0
+mem/0: storing 0 in location 1025
+run/0: instruction interpolate/22
+mem/0: location 1025 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/23
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1016 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1024 is 0
+run/0: address to copy is 1001
+run/0: its type is 4
+mem/0: location 1001 is 95
+run/0: product 0 is 95
+mem/0: storing 95 in location 1026
+run/0: instruction interpolate/24
+run/0: ingredient 0 is in
+mem/0: location 1026 is 95
+run/0: ingredient 1 is 95
+run/0: product 0 is 1
+mem/0: storing 1 in location 1027
+run/0: instruction interpolate/25
+mem/0: location 1027 is 1
+run/0: ingredient 0 is 1
+run/0: ingredient 1 is 
+run/0: jumping to instruction 31
+run/0: instruction interpolate/32
+run/0: ingredient 0 is 0
+mem/0: storing 0 in location 1029
+run/0: instruction interpolate/34
+run/0: ingredient 0 is j
+mem/0: location 1029 is 0
+run/0: ingredient 1 is a-len
+mem/0: location 1021 is 3
+run/0: product 0 is 0
+mem/0: storing 0 in location 1030
+run/0: instruction interpolate/35
+mem/0: location 1030 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/36
+run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}
+mem/0: location 1019 is 1010
+run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]}
+mem/0: location 1029 is 0
+run/0: address to copy is 1011
+run/0: its type is 4
+mem/0: location 1011 is 97
+run/0: product 0 is 97
+mem/0: storing 97 in location 1026
+run/0: instruction interpolate/37
+run/0: ingredient 0 is result
+mem/0: location 1022 is 1074
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1023 is 0
+run/0: address to copy is 1075
+run/0: product 0 is 1075
+mem/0: storing 1075 in location 1028
+run/0: instruction interpolate/38
+run/0: ingredient 0 is in
+mem/0: location 1026 is 97
+mem/0: location 1028 is 1075
+mem/0: storing 97 in location 1075
+run/0: instruction interpolate/39
+run/0: ingredient 0 is j
+mem/0: location 1029 is 0
+run/0: ingredient 1 is 1
+run/0: product 0 is 1
+mem/0: storing 1 in location 1029
+run/0: instruction interpolate/40
+run/0: ingredient 0 is result-idx
+mem/0: location 1023 is 0
+run/0: ingredient 1 is 1
+run/0: product 0 is 1
+mem/0: storing 1 in location 1023
+run/0: instruction interpolate/41
+run/0: ingredient 0 is -8
+run/0: pc now 33
+run/0: instruction interpolate/34
+run/0: ingredient 0 is j
+mem/0: location 1029 is 1
+run/0: ingredient 1 is a-len
+mem/0: location 1021 is 3
+run/0: product 0 is 0
+mem/0: storing 0 in location 1030
+run/0: instruction interpolate/35
+mem/0: location 1030 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/36
+run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}
+mem/0: location 1019 is 1010
+run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]}
+mem/0: location 1029 is 1
+run/0: address to copy is 1012
+run/0: its type is 4
+mem/0: location 1012 is 98
+run/0: product 0 is 98
+mem/0: storing 98 in location 1026
+run/0: instruction interpolate/37
+run/0: ingredient 0 is result
+mem/0: location 1022 is 1074
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1023 is 1
+run/0: address to copy is 1076
+run/0: product 0 is 1076
+mem/0: storing 1076 in location 1028
+run/0: instruction interpolate/38
+run/0: ingredient 0 is in
+mem/0: location 1026 is 98
+mem/0: location 1028 is 1076
+mem/0: storing 98 in location 1076
+run/0: instruction interpolate/39
+run/0: ingredient 0 is j
+mem/0: location 1029 is 1
+run/0: ingredient 1 is 1
+run/0: product 0 is 2
+mem/0: storing 2 in location 1029
+run/0: instruction interpolate/40
+run/0: ingredient 0 is result-idx
+mem/0: location 1023 is 1
+run/0: ingredient 1 is 1
+run/0: product 0 is 2
+mem/0: storing 2 in location 1023
+run/0: instruction interpolate/41
+run/0: ingredient 0 is -8
+run/0: pc now 33
+run/0: instruction interpolate/34
+run/0: ingredient 0 is j
+mem/0: location 1029 is 2
+run/0: ingredient 1 is a-len
+mem/0: location 1021 is 3
+run/0: product 0 is 0
+mem/0: storing 0 in location 1030
+run/0: instruction interpolate/35
+mem/0: location 1030 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/36
+run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}
+mem/0: location 1019 is 1010
+run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]}
+mem/0: location 1029 is 2
+run/0: address to copy is 1013
+run/0: its type is 4
+mem/0: location 1013 is 99
+run/0: product 0 is 99
+mem/0: storing 99 in location 1026
+run/0: instruction interpolate/37
+run/0: ingredient 0 is result
+mem/0: location 1022 is 1074
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1023 is 2
+run/0: address to copy is 1077
+run/0: product 0 is 1077
+mem/0: storing 1077 in location 1028
+run/0: instruction interpolate/38
+run/0: ingredient 0 is in
+mem/0: location 1026 is 99
+mem/0: location 1028 is 1077
+mem/0: storing 99 in location 1077
+run/0: instruction interpolate/39
+run/0: ingredient 0 is j
+mem/0: location 1029 is 2
+run/0: ingredient 1 is 1
+run/0: product 0 is 3
+mem/0: storing 3 in location 1029
+run/0: instruction interpolate/40
+run/0: ingredient 0 is result-idx
+mem/0: location 1023 is 2
+run/0: ingredient 1 is 1
+run/0: product 0 is 3
+mem/0: storing 3 in location 1023
+run/0: instruction interpolate/41
+run/0: ingredient 0 is -8
+run/0: pc now 33
+run/0: instruction interpolate/34
+run/0: ingredient 0 is j
+mem/0: location 1029 is 3
+run/0: ingredient 1 is a-len
+mem/0: location 1021 is 3
+run/0: product 0 is 1
+mem/0: storing 1 in location 1030
+run/0: instruction interpolate/35
+mem/0: location 1030 is 1
+run/0: ingredient 0 is 1
+run/0: ingredient 1 is 
+run/0: jumping to instruction 42
+run/0: instruction interpolate/43
+run/0: ingredient 0 is i
+mem/0: location 1024 is 0
+run/0: ingredient 1 is 1
+run/0: product 0 is 1
+mem/0: storing 1 in location 1024
+run/0: instruction interpolate/44
+run/0: ingredient 0 is -27
+run/0: pc now 17
+run/0: instruction interpolate/18
+mem/0: storing 0 in location 1020
+run/0: instruction interpolate/19
+mem/0: location 1020 is 0
+run/0: ingredient 0 is 0
+run/0: ingredient 1 is 
+run/0: jumping to instruction 45
+run/0: instruction interpolate/47
+run/0: ingredient 0 is i
+mem/0: location 1024 is 1
+run/0: ingredient 1 is tem-len
+mem/0: location 1017 is 9
+run/0: product 0 is 0
+mem/0: storing 0 in location 1025
+run/0: instruction interpolate/48
+mem/0: location 1025 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/49
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1016 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1024 is 1
+run/0: address to copy is 1002
+run/0: its type is 4
+mem/0: location 1002 is 44
+run/0: product 0 is 44
+mem/0: storing 44 in location 1026
+run/0: instruction interpolate/50
+run/0: ingredient 0 is result
+mem/0: location 1022 is 1074
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1023 is 3
+run/0: address to copy is 1078
+run/0: product 0 is 1078
+mem/0: storing 1078 in location 1028
+run/0: instruction interpolate/51
+run/0: ingredient 0 is in
+mem/0: location 1026 is 44
+mem/0: location 1028 is 1078
+mem/0: storing 44 in location 1078
+run/0: instruction interpolate/52
+run/0: ingredient 0 is i
+mem/0: location 1024 is 1
+run/0: ingredient 1 is 1
+run/0: product 0 is 2
+mem/0: storing 2 in location 1024
+run/0: instruction interpolate/53
+run/0: ingredient 0 is result-idx
+mem/0: location 1023 is 3
+run/0: ingredient 1 is 1
+run/0: product 0 is 4
+mem/0: storing 4 in location 1023
+run/0: instruction interpolate/54
+run/0: ingredient 0 is -8
+run/0: pc now 46
+run/0: instruction interpolate/47
+run/0: ingredient 0 is i
+mem/0: location 1024 is 2
+run/0: ingredient 1 is tem-len
+mem/0: location 1017 is 9
+run/0: product 0 is 0
+mem/0: storing 0 in location 1025
+run/0: instruction interpolate/48
+mem/0: location 1025 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/49
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1016 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1024 is 2
+run/0: address to copy is 1003
+run/0: its type is 4
+mem/0: location 1003 is 32
+run/0: product 0 is 32
+mem/0: storing 32 in location 1026
+run/0: instruction interpolate/50
+run/0: ingredient 0 is result
+mem/0: location 1022 is 1074
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1023 is 4
+run/0: address to copy is 1079
+run/0: product 0 is 1079
+mem/0: storing 1079 in location 1028
+run/0: instruction interpolate/51
+run/0: ingredient 0 is in
+mem/0: location 1026 is 32
+mem/0: location 1028 is 1079
+mem/0: storing 32 in location 1079
+run/0: instruction interpolate/52
+run/0: ingredient 0 is i
+mem/0: location 1024 is 2
+run/0: ingredient 1 is 1
+run/0: product 0 is 3
+mem/0: storing 3 in location 1024
+run/0: instruction interpolate/53
+run/0: ingredient 0 is result-idx
+mem/0: location 1023 is 4
+run/0: ingredient 1 is 1
+run/0: product 0 is 5
+mem/0: storing 5 in location 1023
+run/0: instruction interpolate/54
+run/0: ingredient 0 is -8
+run/0: pc now 46
+run/0: instruction interpolate/47
+run/0: ingredient 0 is i
+mem/0: location 1024 is 3
+run/0: ingredient 1 is tem-len
+mem/0: location 1017 is 9
+run/0: product 0 is 0
+mem/0: storing 0 in location 1025
+run/0: instruction interpolate/48
+mem/0: location 1025 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/49
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1016 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1024 is 3
+run/0: address to copy is 1004
+run/0: its type is 4
+mem/0: location 1004 is 104
+run/0: product 0 is 104
+mem/0: storing 104 in location 1026
+run/0: instruction interpolate/50
+run/0: ingredient 0 is result
+mem/0: location 1022 is 1074
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1023 is 5
+run/0: address to copy is 1080
+run/0: product 0 is 1080
+mem/0: storing 1080 in location 1028
+run/0: instruction interpolate/51
+run/0: ingredient 0 is in
+mem/0: location 1026 is 104
+mem/0: location 1028 is 1080
+mem/0: storing 104 in location 1080
+run/0: instruction interpolate/52
+run/0: ingredient 0 is i
+mem/0: location 1024 is 3
+run/0: ingredient 1 is 1
+run/0: product 0 is 4
+mem/0: storing 4 in location 1024
+run/0: instruction interpolate/53
+run/0: ingredient 0 is result-idx
+mem/0: location 1023 is 5
+run/0: ingredient 1 is 1
+run/0: product 0 is 6
+mem/0: storing 6 in location 1023
+run/0: instruction interpolate/54
+run/0: ingredient 0 is -8
+run/0: pc now 46
+run/0: instruction interpolate/47
+run/0: ingredient 0 is i
+mem/0: location 1024 is 4
+run/0: ingredient 1 is tem-len
+mem/0: location 1017 is 9
+run/0: product 0 is 0
+mem/0: storing 0 in location 1025
+run/0: instruction interpolate/48
+mem/0: location 1025 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/49
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1016 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1024 is 4
+run/0: address to copy is 1005
+run/0: its type is 4
+mem/0: location 1005 is 101
+run/0: product 0 is 101
+mem/0: storing 101 in location 1026
+run/0: instruction interpolate/50
+run/0: ingredient 0 is result
+mem/0: location 1022 is 1074
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1023 is 6
+run/0: address to copy is 1081
+run/0: product 0 is 1081
+mem/0: storing 1081 in location 1028
+run/0: instruction interpolate/51
+run/0: ingredient 0 is in
+mem/0: location 1026 is 101
+mem/0: location 1028 is 1081
+mem/0: storing 101 in location 1081
+run/0: instruction interpolate/52
+run/0: ingredient 0 is i
+mem/0: location 1024 is 4
+run/0: ingredient 1 is 1
+run/0: product 0 is 5
+mem/0: storing 5 in location 1024
+run/0: instruction interpolate/53
+run/0: ingredient 0 is result-idx
+mem/0: location 1023 is 6
+run/0: ingredient 1 is 1
+run/0: product 0 is 7
+mem/0: storing 7 in location 1023
+run/0: instruction interpolate/54
+run/0: ingredient 0 is -8
+run/0: pc now 46
+run/0: instruction interpolate/47
+run/0: ingredient 0 is i
+mem/0: location 1024 is 5
+run/0: ingredient 1 is tem-len
+mem/0: location 1017 is 9
+run/0: product 0 is 0
+mem/0: storing 0 in location 1025
+run/0: instruction interpolate/48
+mem/0: location 1025 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/49
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1016 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1024 is 5
+run/0: address to copy is 1006
+run/0: its type is 4
+mem/0: location 1006 is 108
+run/0: product 0 is 108
+mem/0: storing 108 in location 1026
+run/0: instruction interpolate/50
+run/0: ingredient 0 is result
+mem/0: location 1022 is 1074
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1023 is 7
+run/0: address to copy is 1082
+run/0: product 0 is 1082
+mem/0: storing 1082 in location 1028
+run/0: instruction interpolate/51
+run/0: ingredient 0 is in
+mem/0: location 1026 is 108
+mem/0: location 1028 is 1082
+mem/0: storing 108 in location 1082
+run/0: instruction interpolate/52
+run/0: ingredient 0 is i
+mem/0: location 1024 is 5
+run/0: ingredient 1 is 1
+run/0: product 0 is 6
+mem/0: storing 6 in location 1024
+run/0: instruction interpolate/53
+run/0: ingredient 0 is result-idx
+mem/0: location 1023 is 7
+run/0: ingredient 1 is 1
+run/0: product 0 is 8
+mem/0: storing 8 in location 1023
+run/0: instruction interpolate/54
+run/0: ingredient 0 is -8
+run/0: pc now 46
+run/0: instruction interpolate/47
+run/0: ingredient 0 is i
+mem/0: location 1024 is 6
+run/0: ingredient 1 is tem-len
+mem/0: location 1017 is 9
+run/0: product 0 is 0
+mem/0: storing 0 in location 1025
+run/0: instruction interpolate/48
+mem/0: location 1025 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/49
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1016 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1024 is 6
+run/0: address to copy is 1007
+run/0: its type is 4
+mem/0: location 1007 is 108
+run/0: product 0 is 108
+mem/0: storing 108 in location 1026
+run/0: instruction interpolate/50
+run/0: ingredient 0 is result
+mem/0: location 1022 is 1074
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1023 is 8
+run/0: address to copy is 1083
+run/0: product 0 is 1083
+mem/0: storing 1083 in location 1028
+run/0: instruction interpolate/51
+run/0: ingredient 0 is in
+mem/0: location 1026 is 108
+mem/0: location 1028 is 1083
+mem/0: storing 108 in location 1083
+run/0: instruction interpolate/52
+run/0: ingredient 0 is i
+mem/0: location 1024 is 6
+run/0: ingredient 1 is 1
+run/0: product 0 is 7
+mem/0: storing 7 in location 1024
+run/0: instruction interpolate/53
+run/0: ingredient 0 is result-idx
+mem/0: location 1023 is 8
+run/0: ingredient 1 is 1
+run/0: product 0 is 9
+mem/0: storing 9 in location 1023
+run/0: instruction interpolate/54
+run/0: ingredient 0 is -8
+run/0: pc now 46
+run/0: instruction interpolate/47
+run/0: ingredient 0 is i
+mem/0: location 1024 is 7
+run/0: ingredient 1 is tem-len
+mem/0: location 1017 is 9
+run/0: product 0 is 0
+mem/0: storing 0 in location 1025
+run/0: instruction interpolate/48
+mem/0: location 1025 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/49
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1016 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1024 is 7
+run/0: address to copy is 1008
+run/0: its type is 4
+mem/0: location 1008 is 111
+run/0: product 0 is 111
+mem/0: storing 111 in location 1026
+run/0: instruction interpolate/50
+run/0: ingredient 0 is result
+mem/0: location 1022 is 1074
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1023 is 9
+run/0: address to copy is 1084
+run/0: product 0 is 1084
+mem/0: storing 1084 in location 1028
+run/0: instruction interpolate/51
+run/0: ingredient 0 is in
+mem/0: location 1026 is 111
+mem/0: location 1028 is 1084
+mem/0: storing 111 in location 1084
+run/0: instruction interpolate/52
+run/0: ingredient 0 is i
+mem/0: location 1024 is 7
+run/0: ingredient 1 is 1
+run/0: product 0 is 8
+mem/0: storing 8 in location 1024
+run/0: instruction interpolate/53
+run/0: ingredient 0 is result-idx
+mem/0: location 1023 is 9
+run/0: ingredient 1 is 1
+run/0: product 0 is 10
+mem/0: storing 10 in location 1023
+run/0: instruction interpolate/54
+run/0: ingredient 0 is -8
+run/0: pc now 46
+run/0: instruction interpolate/47
+run/0: ingredient 0 is i
+mem/0: location 1024 is 8
+run/0: ingredient 1 is tem-len
+mem/0: location 1017 is 9
+run/0: product 0 is 0
+mem/0: storing 0 in location 1025
+run/0: instruction interpolate/48
+mem/0: location 1025 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/49
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1016 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1024 is 8
+run/0: address to copy is 1009
+run/0: its type is 4
+mem/0: location 1009 is 33
+run/0: product 0 is 33
+mem/0: storing 33 in location 1026
+run/0: instruction interpolate/50
+run/0: ingredient 0 is result
+mem/0: location 1022 is 1074
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1023 is 10
+run/0: address to copy is 1085
+run/0: product 0 is 1085
+mem/0: storing 1085 in location 1028
+run/0: instruction interpolate/51
+run/0: ingredient 0 is in
+mem/0: location 1026 is 33
+mem/0: location 1028 is 1085
+mem/0: storing 33 in location 1085
+run/0: instruction interpolate/52
+run/0: ingredient 0 is i
+mem/0: location 1024 is 8
+run/0: ingredient 1 is 1
+run/0: product 0 is 9
+mem/0: storing 9 in location 1024
+run/0: instruction interpolate/53
+run/0: ingredient 0 is result-idx
+mem/0: location 1023 is 10
+run/0: ingredient 1 is 1
+run/0: product 0 is 11
+mem/0: storing 11 in location 1023
+run/0: instruction interpolate/54
+run/0: ingredient 0 is -8
+run/0: pc now 46
+run/0: instruction interpolate/47
+run/0: ingredient 0 is i
+mem/0: location 1024 is 9
+run/0: ingredient 1 is tem-len
+mem/0: location 1017 is 9
+run/0: product 0 is 1
+mem/0: storing 1 in location 1025
+run/0: instruction interpolate/48
+mem/0: location 1025 is 1
+run/0: ingredient 0 is 1
+run/0: ingredient 1 is 
+run/0: jumping to instruction 55
+run/0: instruction interpolate/56
+mem/0: location 1022 is 1074
+run/0: result 0 is 1074
+mem/0: storing 1074 in location 3
+run/0: instruction test-interpolate-at-start/3
+run/0: ingredient 0 is 3
+mem/0: location 3 is 1074
+mem/0: location 1074 is 11
+mem/0: location 1075 is 97
+mem/0: location 1076 is 98
+mem/0: location 1077 is 99
+mem/0: location 1078 is 44
+mem/0: location 1079 is 32
+mem/0: location 1080 is 104
+mem/0: location 1081 is 101
+mem/0: location 1082 is 108
+mem/0: location 1083 is 108
+mem/0: location 1084 is 111
+mem/0: location 1085 is 33
+mem/0: storing 11 in location 4
+mem/0: storing 97 in location 5
+mem/0: storing 98 in location 6
+mem/0: storing 99 in location 7
+mem/0: storing 44 in location 8
+mem/0: storing 32 in location 9
+mem/0: storing 104 in location 10
+mem/0: storing 101 in location 11
+mem/0: storing 108 in location 12
+mem/0: storing 108 in location 13
+mem/0: storing 111 in location 14
+mem/0: storing 33 in location 15
diff --git a/cpp/.traces/interpolate-works b/cpp/.traces/interpolate-works
new file mode 100644
index 00000000..c61cd12a
--- /dev/null
+++ b/cpp/.traces/interpolate-works
@@ -0,0 +1,577 @@
+parse/0: instruction: 35
+parse/0:   ingredient: {name: "abc _", value: 0, type: 0, properties: ["abc _": "literal-string"]}
+parse/0:   product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}
+parse/0: instruction: 35
+parse/0:   ingredient: {name: "def", value: 0, type: 0, properties: ["def": "literal-string"]}
+parse/0:   product: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]}
+parse/0: instruction: 107
+parse/0:   ingredient: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}
+parse/0:   ingredient: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]}
+parse/0:   product: {name: "3", value: 0, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]}
+parse/0: instruction: 1
+parse/0:   ingredient: {name: "3", value: 0, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]}
+parse/0:   product: {name: "4", value: 0, type: 5-4, properties: ["4": "array":"character", "raw": ]}
+new/0: abc _ -> 0
+new/0: def -> 0
+after-brace/0: recipe test-interpolate-works
+after-brace/0: new ...
+after-brace/0: new ...
+after-brace/0: interpolate ...
+after-brace/0: copy ...
+run/0: instruction test-interpolate-works/0
+mem/0: storing 1000 in location 1
+run/0: instruction test-interpolate-works/1
+mem/0: storing 1006 in location 2
+run/0: instruction test-interpolate-works/2
+mem/0: location 1 is 1000
+mem/0: location 2 is 1006
+run/0: instruction interpolate/0
+mem/0: new alloc: 1010
+mem/0: array size is 60
+run/0: instruction interpolate/1
+run/0: product 0 is 1000
+mem/0: storing 1000 in location 1012
+run/0: instruction interpolate/2
+mem/0: location 1012 is 1000
+mem/0: storing 5 in location 1013
+run/0: instruction interpolate/3
+run/0: ingredient 0 is tem-len
+mem/0: location 1013 is 5
+mem/0: storing 5 in location 1014
+run/0: instruction interpolate/5
+run/0: product 0 is 1006
+mem/0: storing 1006 in location 1015
+mem/0: storing 1 in location 1016
+run/0: instruction interpolate/6
+mem/0: location 1016 is 1
+run/0: ingredient 0 is 1
+run/0: jump-unless fell through
+run/0: instruction interpolate/7
+mem/0: location 1015 is 1006
+mem/0: storing 3 in location 1017
+run/0: instruction interpolate/8
+run/0: ingredient 0 is result-len
+mem/0: location 1014 is 5
+run/0: ingredient 1 is a-len
+mem/0: location 1017 is 3
+run/0: product 0 is 8
+mem/0: storing 8 in location 1014
+run/0: instruction interpolate/9
+run/0: ingredient 0 is result-len
+mem/0: location 1014 is 8
+run/0: ingredient 1 is 1
+run/0: product 0 is 7
+mem/0: storing 7 in location 1014
+run/0: instruction interpolate/10
+run/0: ingredient 0 is -6
+run/0: pc now 4
+run/0: instruction interpolate/5
+mem/0: storing 0 in location 1016
+run/0: instruction interpolate/6
+mem/0: location 1016 is 0
+run/0: ingredient 0 is 0
+run/0: ingredient 1 is 
+run/0: jumping to instruction 11
+run/0: instruction interpolate/12
+run/0: instruction interpolate/13
+run/0: product 0 is 1000
+run/0: instruction interpolate/14
+mem/0: new alloc: 1070
+mem/0: storing 1070 in location 1018
+mem/0: location 1014 is 7
+mem/0: array size is 7
+run/0: instruction interpolate/15
+run/0: ingredient 0 is 0
+mem/0: storing 0 in location 1019
+run/0: instruction interpolate/16
+run/0: ingredient 0 is 0
+mem/0: storing 0 in location 1020
+run/0: instruction interpolate/18
+run/0: product 0 is 1006
+mem/0: storing 1006 in location 1015
+mem/0: storing 1 in location 1016
+run/0: instruction interpolate/19
+mem/0: location 1016 is 1
+run/0: ingredient 0 is 1
+run/0: jump-unless fell through
+run/0: instruction interpolate/21
+run/0: ingredient 0 is i
+mem/0: location 1020 is 0
+run/0: ingredient 1 is tem-len
+mem/0: location 1013 is 5
+run/0: product 0 is 0
+mem/0: storing 0 in location 1021
+run/0: instruction interpolate/22
+mem/0: location 1021 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/23
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1012 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1020 is 0
+run/0: address to copy is 1001
+run/0: its type is 4
+mem/0: location 1001 is 97
+run/0: product 0 is 97
+mem/0: storing 97 in location 1022
+run/0: instruction interpolate/24
+run/0: ingredient 0 is in
+mem/0: location 1022 is 97
+run/0: ingredient 1 is 95
+run/0: product 0 is 0
+mem/0: storing 0 in location 1023
+run/0: instruction interpolate/25
+mem/0: location 1023 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/26
+run/0: ingredient 0 is result
+mem/0: location 1018 is 1070
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1019 is 0
+run/0: address to copy is 1071
+run/0: product 0 is 1071
+mem/0: storing 1071 in location 1024
+run/0: instruction interpolate/27
+run/0: ingredient 0 is in
+mem/0: location 1022 is 97
+mem/0: location 1024 is 1071
+mem/0: storing 97 in location 1071
+run/0: instruction interpolate/28
+run/0: ingredient 0 is i
+mem/0: location 1020 is 0
+run/0: ingredient 1 is 1
+run/0: product 0 is 1
+mem/0: storing 1 in location 1020
+run/0: instruction interpolate/29
+run/0: ingredient 0 is result-idx
+mem/0: location 1019 is 0
+run/0: ingredient 1 is 1
+run/0: product 0 is 1
+mem/0: storing 1 in location 1019
+run/0: instruction interpolate/30
+run/0: ingredient 0 is -10
+run/0: pc now 20
+run/0: instruction interpolate/21
+run/0: ingredient 0 is i
+mem/0: location 1020 is 1
+run/0: ingredient 1 is tem-len
+mem/0: location 1013 is 5
+run/0: product 0 is 0
+mem/0: storing 0 in location 1021
+run/0: instruction interpolate/22
+mem/0: location 1021 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/23
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1012 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1020 is 1
+run/0: address to copy is 1002
+run/0: its type is 4
+mem/0: location 1002 is 98
+run/0: product 0 is 98
+mem/0: storing 98 in location 1022
+run/0: instruction interpolate/24
+run/0: ingredient 0 is in
+mem/0: location 1022 is 98
+run/0: ingredient 1 is 95
+run/0: product 0 is 0
+mem/0: storing 0 in location 1023
+run/0: instruction interpolate/25
+mem/0: location 1023 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/26
+run/0: ingredient 0 is result
+mem/0: location 1018 is 1070
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1019 is 1
+run/0: address to copy is 1072
+run/0: product 0 is 1072
+mem/0: storing 1072 in location 1024
+run/0: instruction interpolate/27
+run/0: ingredient 0 is in
+mem/0: location 1022 is 98
+mem/0: location 1024 is 1072
+mem/0: storing 98 in location 1072
+run/0: instruction interpolate/28
+run/0: ingredient 0 is i
+mem/0: location 1020 is 1
+run/0: ingredient 1 is 1
+run/0: product 0 is 2
+mem/0: storing 2 in location 1020
+run/0: instruction interpolate/29
+run/0: ingredient 0 is result-idx
+mem/0: location 1019 is 1
+run/0: ingredient 1 is 1
+run/0: product 0 is 2
+mem/0: storing 2 in location 1019
+run/0: instruction interpolate/30
+run/0: ingredient 0 is -10
+run/0: pc now 20
+run/0: instruction interpolate/21
+run/0: ingredient 0 is i
+mem/0: location 1020 is 2
+run/0: ingredient 1 is tem-len
+mem/0: location 1013 is 5
+run/0: product 0 is 0
+mem/0: storing 0 in location 1021
+run/0: instruction interpolate/22
+mem/0: location 1021 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/23
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1012 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1020 is 2
+run/0: address to copy is 1003
+run/0: its type is 4
+mem/0: location 1003 is 99
+run/0: product 0 is 99
+mem/0: storing 99 in location 1022
+run/0: instruction interpolate/24
+run/0: ingredient 0 is in
+mem/0: location 1022 is 99
+run/0: ingredient 1 is 95
+run/0: product 0 is 0
+mem/0: storing 0 in location 1023
+run/0: instruction interpolate/25
+mem/0: location 1023 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/26
+run/0: ingredient 0 is result
+mem/0: location 1018 is 1070
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1019 is 2
+run/0: address to copy is 1073
+run/0: product 0 is 1073
+mem/0: storing 1073 in location 1024
+run/0: instruction interpolate/27
+run/0: ingredient 0 is in
+mem/0: location 1022 is 99
+mem/0: location 1024 is 1073
+mem/0: storing 99 in location 1073
+run/0: instruction interpolate/28
+run/0: ingredient 0 is i
+mem/0: location 1020 is 2
+run/0: ingredient 1 is 1
+run/0: product 0 is 3
+mem/0: storing 3 in location 1020
+run/0: instruction interpolate/29
+run/0: ingredient 0 is result-idx
+mem/0: location 1019 is 2
+run/0: ingredient 1 is 1
+run/0: product 0 is 3
+mem/0: storing 3 in location 1019
+run/0: instruction interpolate/30
+run/0: ingredient 0 is -10
+run/0: pc now 20
+run/0: instruction interpolate/21
+run/0: ingredient 0 is i
+mem/0: location 1020 is 3
+run/0: ingredient 1 is tem-len
+mem/0: location 1013 is 5
+run/0: product 0 is 0
+mem/0: storing 0 in location 1021
+run/0: instruction interpolate/22
+mem/0: location 1021 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/23
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1012 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1020 is 3
+run/0: address to copy is 1004
+run/0: its type is 4
+mem/0: location 1004 is 32
+run/0: product 0 is 32
+mem/0: storing 32 in location 1022
+run/0: instruction interpolate/24
+run/0: ingredient 0 is in
+mem/0: location 1022 is 32
+run/0: ingredient 1 is 95
+run/0: product 0 is 0
+mem/0: storing 0 in location 1023
+run/0: instruction interpolate/25
+mem/0: location 1023 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/26
+run/0: ingredient 0 is result
+mem/0: location 1018 is 1070
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1019 is 3
+run/0: address to copy is 1074
+run/0: product 0 is 1074
+mem/0: storing 1074 in location 1024
+run/0: instruction interpolate/27
+run/0: ingredient 0 is in
+mem/0: location 1022 is 32
+mem/0: location 1024 is 1074
+mem/0: storing 32 in location 1074
+run/0: instruction interpolate/28
+run/0: ingredient 0 is i
+mem/0: location 1020 is 3
+run/0: ingredient 1 is 1
+run/0: product 0 is 4
+mem/0: storing 4 in location 1020
+run/0: instruction interpolate/29
+run/0: ingredient 0 is result-idx
+mem/0: location 1019 is 3
+run/0: ingredient 1 is 1
+run/0: product 0 is 4
+mem/0: storing 4 in location 1019
+run/0: instruction interpolate/30
+run/0: ingredient 0 is -10
+run/0: pc now 20
+run/0: instruction interpolate/21
+run/0: ingredient 0 is i
+mem/0: location 1020 is 4
+run/0: ingredient 1 is tem-len
+mem/0: location 1013 is 5
+run/0: product 0 is 0
+mem/0: storing 0 in location 1021
+run/0: instruction interpolate/22
+mem/0: location 1021 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/23
+run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}
+mem/0: location 1012 is 1000
+run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]}
+mem/0: location 1020 is 4
+run/0: address to copy is 1005
+run/0: its type is 4
+mem/0: location 1005 is 95
+run/0: product 0 is 95
+mem/0: storing 95 in location 1022
+run/0: instruction interpolate/24
+run/0: ingredient 0 is in
+mem/0: location 1022 is 95
+run/0: ingredient 1 is 95
+run/0: product 0 is 1
+mem/0: storing 1 in location 1023
+run/0: instruction interpolate/25
+mem/0: location 1023 is 1
+run/0: ingredient 0 is 1
+run/0: ingredient 1 is 
+run/0: jumping to instruction 31
+run/0: instruction interpolate/32
+run/0: ingredient 0 is 0
+mem/0: storing 0 in location 1025
+run/0: instruction interpolate/34
+run/0: ingredient 0 is j
+mem/0: location 1025 is 0
+run/0: ingredient 1 is a-len
+mem/0: location 1017 is 3
+run/0: product 0 is 0
+mem/0: storing 0 in location 1026
+run/0: instruction interpolate/35
+mem/0: location 1026 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/36
+run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}
+mem/0: location 1015 is 1006
+run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]}
+mem/0: location 1025 is 0
+run/0: address to copy is 1007
+run/0: its type is 4
+mem/0: location 1007 is 100
+run/0: product 0 is 100
+mem/0: storing 100 in location 1022
+run/0: instruction interpolate/37
+run/0: ingredient 0 is result
+mem/0: location 1018 is 1070
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1019 is 4
+run/0: address to copy is 1075
+run/0: product 0 is 1075
+mem/0: storing 1075 in location 1024
+run/0: instruction interpolate/38
+run/0: ingredient 0 is in
+mem/0: location 1022 is 100
+mem/0: location 1024 is 1075
+mem/0: storing 100 in location 1075
+run/0: instruction interpolate/39
+run/0: ingredient 0 is j
+mem/0: location 1025 is 0
+run/0: ingredient 1 is 1
+run/0: product 0 is 1
+mem/0: storing 1 in location 1025
+run/0: instruction interpolate/40
+run/0: ingredient 0 is result-idx
+mem/0: location 1019 is 4
+run/0: ingredient 1 is 1
+run/0: product 0 is 5
+mem/0: storing 5 in location 1019
+run/0: instruction interpolate/41
+run/0: ingredient 0 is -8
+run/0: pc now 33
+run/0: instruction interpolate/34
+run/0: ingredient 0 is j
+mem/0: location 1025 is 1
+run/0: ingredient 1 is a-len
+mem/0: location 1017 is 3
+run/0: product 0 is 0
+mem/0: storing 0 in location 1026
+run/0: instruction interpolate/35
+mem/0: location 1026 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/36
+run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}
+mem/0: location 1015 is 1006
+run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]}
+mem/0: location 1025 is 1
+run/0: address to copy is 1008
+run/0: its type is 4
+mem/0: location 1008 is 101
+run/0: product 0 is 101
+mem/0: storing 101 in location 1022
+run/0: instruction interpolate/37
+run/0: ingredient 0 is result
+mem/0: location 1018 is 1070
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1019 is 5
+run/0: address to copy is 1076
+run/0: product 0 is 1076
+mem/0: storing 1076 in location 1024
+run/0: instruction interpolate/38
+run/0: ingredient 0 is in
+mem/0: location 1022 is 101
+mem/0: location 1024 is 1076
+mem/0: storing 101 in location 1076
+run/0: instruction interpolate/39
+run/0: ingredient 0 is j
+mem/0: location 1025 is 1
+run/0: ingredient 1 is 1
+run/0: product 0 is 2
+mem/0: storing 2 in location 1025
+run/0: instruction interpolate/40
+run/0: ingredient 0 is result-idx
+mem/0: location 1019 is 5
+run/0: ingredient 1 is 1
+run/0: product 0 is 6
+mem/0: storing 6 in location 1019
+run/0: instruction interpolate/41
+run/0: ingredient 0 is -8
+run/0: pc now 33
+run/0: instruction interpolate/34
+run/0: ingredient 0 is j
+mem/0: location 1025 is 2
+run/0: ingredient 1 is a-len
+mem/0: location 1017 is 3
+run/0: product 0 is 0
+mem/0: storing 0 in location 1026
+run/0: instruction interpolate/35
+mem/0: location 1026 is 0
+run/0: ingredient 0 is 0
+run/0: jump-if fell through
+run/0: instruction interpolate/36
+run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}
+mem/0: location 1015 is 1006
+run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]}
+mem/0: location 1025 is 2
+run/0: address to copy is 1009
+run/0: its type is 4
+mem/0: location 1009 is 102
+run/0: product 0 is 102
+mem/0: storing 102 in location 1022
+run/0: instruction interpolate/37
+run/0: ingredient 0 is result
+mem/0: location 1018 is 1070
+run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}
+mem/0: location 1019 is 6
+run/0: address to copy is 1077
+run/0: product 0 is 1077
+mem/0: storing 1077 in location 1024
+run/0: instruction interpolate/38
+run/0: ingredient 0 is in
+mem/0: location 1022 is 102
+mem/0: location 1024 is 1077
+mem/0: storing 102 in location 1077
+run/0: instruction interpolate/39
+run/0: ingredient 0 is j
+mem/0: location 1025 is 2
+run/0: ingredient 1 is 1
+run/0: product 0 is 3
+mem/0: storing 3 in location 1025
+run/0: instruction interpolate/40
+run/0: ingredient 0 is result-idx
+mem/0: location 1019 is 6
+run/0: ingredient 1 is 1
+run/0: product 0 is 7
+mem/0: storing 7 in location 1019
+run/0: instruction interpolate/41
+run/0: ingredient 0 is -8
+run/0: pc now 33
+run/0: instruction interpolate/34
+run/0: ingredient 0 is j
+mem/0: location 1025 is 3
+run/0: ingredient 1 is a-len
+mem/0: location 1017 is 3
+run/0: product 0 is 1
+mem/0: storing 1 in location 1026
+run/0: instruction interpolate/35
+mem/0: location 1026 is 1
+run/0: ingredient 0 is 1
+run/0: ingredient 1 is 
+run/0: jumping to instruction 42
+run/0: instruction interpolate/43
+run/0: ingredient 0 is i
+mem/0: location 1020 is 4
+run/0: ingredient 1 is 1
+run/0: product 0 is 5
+mem/0: storing 5 in location 1020
+run/0: instruction interpolate/44
+run/0: ingredient 0 is -27
+run/0: pc now 17
+run/0: instruction interpolate/18
+mem/0: storing 0 in location 1016
+run/0: instruction interpolate/19
+mem/0: location 1016 is 0
+run/0: ingredient 0 is 0
+run/0: ingredient 1 is 
+run/0: jumping to instruction 45
+run/0: instruction interpolate/47
+run/0: ingredient 0 is i
+mem/0: location 1020 is 5
+run/0: ingredient 1 is tem-len
+mem/0: location 1013 is 5
+run/0: product 0 is 1
+mem/0: storing 1 in location 1021
+run/0: instruction interpolate/48
+mem/0: location 1021 is 1
+run/0: ingredient 0 is 1
+run/0: ingredient 1 is 
+run/0: jumping to instruction 55
+run/0: instruction interpolate/56
+mem/0: location 1018 is 1070
+run/0: result 0 is 1070
+mem/0: storing 1070 in location 3
+run/0: instruction test-interpolate-works/3
+run/0: ingredient 0 is 3
+mem/0: location 3 is 1070
+mem/0: location 1070 is 7
+mem/0: location 1071 is 97
+mem/0: location 1072 is 98
+mem/0: location 1073 is 99
+mem/0: location 1074 is 32
+mem/0: location 1075 is 100
+mem/0: location 1076 is 101
+mem/0: location 1077 is 102
+mem/0: storing 7 in location 4
+mem/0: storing 97 in location 5
+mem/0: storing 98 in location 6
+mem/0: storing 99 in location 7
+mem/0: storing 32 in location 8
+mem/0: storing 100 in location 9
+mem/0: storing 101 in location 10
+mem/0: storing 102 in location 11