about summary refs log tree commit diff stats
path: root/html/fake-keyboard.png
blob: b3d7aad27025de1f09f4ab997546aacbac207081 (plain)
ofshex dumpascii
0000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 01 2b 00 00 00 64 08 06 00 00 00 de dd 16 .PNG........IHDR...+...d........
0020 b9 00 00 18 27 69 43 43 50 49 43 43 20 50 72 6f 66 69 6c 65 00 00 58 85 95 79 07 54 14 4d b3 76 ....'iCCPICC.Profile..X..y.T.M.v
0040 cf ce 06 58 96 25 a7 25 e7 24 39 83 e4 9c 73 46 60 c9 39 67 54 a2 48 50 11 04 14 01 15 54 10 54 ...X.%.%.$9...sF`.9gT.HP.....T.T
0060 30 90 44 4c 08 22 8a 08 2a 60 40 24 18 48 2a 28 a0 08 c8 1d 82 be df 7d ef 7f fe 7b 6e 9f d3 33 0.DL."..*`@$.H*(.......}...{n..3
0080 cf 56 57 57 3f dd 55 dd 33 b5 03 00 3b 2b 39 22 22 04 45 0b 40 68 58 4c 94 8d a1 0e 8f 93 b3 0b .VWW?.U.3...;+9"".E.@hXL........
00a0 0f 6e 0c a0 00 09 10 91 4a 22 7b 47 47 68 5b 59 99 01 a4 fc b9 ff f7 b2 3c 04 a0 cd fb 73 89 4d .n......J"{GGh[Y........<....s.M
00c0 5b ff b3 fd ff 5b e8 7c 7c a3 bd 01 80 ac 10 ec e5 13 ed 1d 8a e0 46 00 d0 24 ef 88 a8 18 00 30 [....[.||.............F..$.....0
00e0 fd 88 9c 3f 3e 26 62 13 2f 22 98 31 0a 21 08 00 96 62 13 fb 6f 63 8e 4d ec b5 8d a5 b7 74 ec 6c ...?>&b./".1.!...b..oc.M.....t.l
0100 74 11 ac 07 00 05 81 4c 8e f2 07 80 b8 69 9f 27 ce db 1f b1 43 8c 40 da e8 c3 7c 02 c3 10 d5 4c t......L.....i.'....C.@...|....L
0120 04 6b 78 07 90 7d 00 20 75 22 3a bb 42 43 c3 37 f1 3c 82 45 bc fe c3 8e ff 7f b3 e9 f5 d7 26 99 .kx..}..u":.BC.7.<.E..........&.
0140 ec ff 17 6f cf 65 ab 50 e8 05 46 47 84 90 13 ff 8f cb f1 bf 97 d0 90 d8 3f 63 f0 21 95 10 10 65 ...o.e.P..FG............?c.!...e
0160 64 b3 39 67 64 dd 2e 04 87 9b 6e 62 02 82 db c3 bc 2c 2c 11 4c 8f e0 87 81 3e 5b fa 9b f8 75 40 d.9gd.....nb.....,,.L....>[...u@
0180 ac 91 fd 8e fe 9c 77 b4 2e b2 66 80 19 20 ee f6 21 eb 99 22 18 59 4b 14 73 6c b0 bd f6 0e 96 25 ......w...f.....!..".YK.sl.....%
01a0 47 6d f5 45 f4 51 16 81 31 c6 76 3b d8 2b 2a dc 66 c7 3e 2a 2e 2c c4 c2 6c c7 4e 76 80 af f1 1f Gm.E.Q..1.v;.+*.f.>*.,..l.Nv....
01c0 7c ca 37 5a df f6 8f 8e 5f a0 81 31 82 91 48 43 35 26 05 d8 39 6e f3 44 75 c6 05 3a 58 20 98 88 |.7Z...._..1..HC5&..9n.Du..:X...
01e0 e0 fe e8 60 5b d3 9d be a3 49 01 ba 16 7f 74 a2 62 6d 36 39 0b 20 78 d1 2f ca c0 66 5b 07 66 0d ...`[....I....t.bm69..x./..f[.f.
0200 8d fe 33 2f 58 d2 9b bc 35 16 2b 82 b5 62 02 ec 8c b6 fb c2 4e be d1 4e 66 7f 38 f8 f8 ea e9 6f ..3/X...5.+..b......N..Nf.8....o
0220 73 80 7d 7c c3 ec 77 b8 c1 48 74 e9 d8 ec f4 cd 8a 08 b1 da d1 87 4f f9 86 18 da 6c af 33 7c 25 s.}|..w..Ht...........O....l.3|%
0240 3a ce f6 4f df 67 31 48 80 6d af 03 3c 11 44 36 b1 da e6 0f 2f 47 c4 58 d9 6d 73 43 a3 81 19 d0 :..O.g1H.m..<.D6..../G.X.msC....
0260 05 7a 80 07 c4 22 d5 0b 84 83 20 10 d8 37 d7 32 87 fc da 6e 31 00 64 10 05 fc 81 2f 90 d8 91 fc .z...".......7.2...n1.d..../....
0280 e9 e1 b8 d5 12 86 5c 6d 41 12 f8 8c 20 5f 10 fd b7 9f ce 56 ab 2f 88 43 e4 eb 7f a5 db 57 09 e0 ......\mA...._.....V./.C.....W..
02a0 b7 d5 1a b7 d5 23 18 7c 44 70 28 9a 84 d6 40 ab a1 cd 90 ab 16 52 65 d1 ca 68 95 3f fd 78 68 fe .....#.|Dp(...@......Re..h.?.xh.
02c0 8c 8a d5 c7 ea 61 8d b0 06 58 d1 bf 3c bc 11 d6 21 48 8d 02 81 ff 0f 99 29 72 f7 45 66 b7 c9 25 .....a...X..<...!H......)r.Ef..%
02e0 ec cf 1c fe b1 87 f9 88 19 c0 4c 60 06 31 63 98 57 c0 01 bc df b2 b2 a3 e5 11 98 1e f5 2f e6 3c ..........L`.1c.W............/.<
0300 c0 1c 8c 21 d6 0c 76 66 e7 85 d8 9c fe a3 83 16 42 58 2b a0 75 d0 ea 08 7f 84 3b 9a 19 4d 02 12 ...!..vf........BX+.u.....;..M..
0320 68 79 64 26 da 68 4d 64 6e 0a 88 f4 3f 19 c6 fe e5 f6 cf 5a fe 7b bc 4d d6 ff 39 9f 1d 39 51 8c hyd&.hMdn...?......Z.{.M..9..9Q.
0340 a8 b0 c3 c2 eb af 67 74 ff 6a fd db 8a ee 7f ac 91 0f 72 37 fd b7 26 9c 0d 5f 87 bb e1 7b 70 0f ......gt.j........r7..&.._...{p.
0360 dc 0e b7 00 1e f8 0e dc 0a f7 c2 b7 36 f1 df 48 78 bf 15 09 7f 46 b3 d9 e2 16 8c d8 09 fc a3 23 ............6..Hx....F.........#
0380 7d 51 7a 5a 7a ed 7f 8c 4e de 61 10 b5 e5 6f 10 e3 9b 10 b3 b9 21 74 c3 23 12 a3 02 fd 03 62 78 }QzZz...N.a...o......!t.#.....bx
03a0 b4 91 13 d9 97 c7 38 cc 5b 72 17 8f ac b4 8c 22 00 9b e7 fb f6 f1 f1 dd 66 eb dc 86 98 9f fe 23 ......8.[r....."........f......#
03c0 f3 9d 02 60 37 12 e3 94 fd ff c8 82 8e 01 50 d7 05 00 4b ee 3f 32 21 57 00 d8 76 01 70 f5 99 77 ...`7.........P...K.?2!W..v.p..w
03e0 6c 54 dc b6 0c bd 79 c1 00 3c a0 41 76 06 1b e0 02 fc 40 04 99 93 2c 50 04 6a 40 0b e8 03 13 60 lT....y..<.Av.....@...,P.j@....`
0400 09 ec 80 33 70 47 56 3d 00 84 22 ac e3 c1 5e 90 06 b2 40 1e 38 0a 8a c1 49 70 1a 9c 05 17 c0 65 ...3pGV=.."...^...@.8...Ip.....e
0420 70 0d b4 80 76 70 0f 3c 00 8f 41 3f 18 04 6f 90 d8 f8 00 66 c1 3c 58 06 ab 10 04 e1 20 6a 88 01 p...vp.<..A?..o....f.<X......j..
0440 62 83 b8 21 41 48 1c 92 85 94 21 0d 48 1f 32 83 6c 20 67 c8 13 f2 87 c2 a0 58 68 2f 94 01 e5 41 b..!AH....!.H.2.l.g......Xh/...A
0460 85 d0 49 a8 12 aa 85 ae 42 37 a0 7b 50 0f 34 00 bd 82 c6 a1 69 e8 1b f4 0b 05 a3 08 28 46 14 27 ..I.....B7.{P.4.....i.......(F.'
0480 4a 08 25 85 52 46 69 a3 4c 51 76 a8 3d 28 7f 54 24 2a 09 95 89 3a 82 3a 81 aa 42 5d 42 35 a3 ee J.%.RFi.LQv.=(.T$*...:.:..B]B5..
04a0 a1 1e a3 06 51 63 a8 59 d4 12 0c 60 2a 98 19 e6 85 25 60 65 58 17 b6 84 5d 60 3f 38 0a de 0f e7 ....Qc.Y...`*....%`eX...]`?8....
04c0 c2 25 70 15 5c 0f b7 21 be 7e 0e 8f c1 73 f0 0a 1a 8b 66 40 f3 a0 25 90 f8 34 42 db a3 bd d1 91 .%p.\..!.~...s....f@..%..4B.....
04e0 e8 fd e8 43 e8 93 e8 0b e8 66 74 27 fa 39 7a 1c 3d 8f fe 8d a1 c6 70 60 c4 31 aa 18 63 8c 13 c6 ...C.....ft'.9z.=.....p`.1..c...
0500 1f 13 8f c9 c2 94 60 aa 31 4d 98 2e 64 ef 7c c0 2c 63 b1 58 66 ac 30 56 09 d9 9b ce d8 20 6c 32 ......`.1M..d.|.,c.Xf.0V......l2
0520 f6 10 b6 02 db 80 bd 8b 1d c0 4e 62 97 70 38 1c 1b 4e 1c a7 8e b3 c4 91 71 31 b8 2c 5c 29 ee 12 ..........Nb.p8..N......q1.,\)..
0540 ee 0e ee 19 ee 03 ee 27 05 15 05 37 85 2c 85 01 85 0b 45 18 45 3a 45 09 45 1d c5 6d 8a 67 14 9f .......'...7.,....E.E:E.E..m.g..
0560 28 56 29 69 29 05 29 55 29 2d 29 7d 28 13 29 f3 29 cf 51 b6 51 3e a5 fc 40 b9 8a a7 c3 0b e3 d5 (V)i).)U)-)}(.).).Q.Q>..@.......
0580 f1 76 f8 20 7c 1a fe 04 be 1e df 85 1f c1 7f a7 a2 a2 e2 a3 52 a1 b2 a6 0a a4 4a a5 3a 41 75 85 .v..|...............R.....J.:Au.
05a0 ea 21 d5 38 d5 0a 81 9e 20 46 d0 25 b8 11 62 09 47 08 35 84 bb 84 57 84 ef d4 d4 d4 42 d4 5a d4 .!.8.....F.%..b.G.5...W.....B.Z.
05c0 2e d4 31 d4 47 a8 6b a9 ef 53 8f 52 ff 24 32 10 25 89 c6 44 1f 62 0a b1 8c d8 4c 7c 46 fc 42 43 ..1.G.k..S.R.$2.%..D.b....L|F.BC
05e0 49 23 48 a3 4d e3 4e 93 44 53 42 73 9d e6 29 cd 1c 2d 25 ad 10 ad 2e 2d 99 76 3f 6d 19 ed 0d da I#H.M.N.DSBs..)..-%....-.v?m....
0600 61 da 25 3a 06 3a 19 3a 4b ba 50 ba 43 74 75 74 3d 74 53 f4 38 7a 21 7a 7d 7a 1f fa 4c fa b3 f4 a.%:.:.:K.P.Ctut=tS.8z!z}z..L...
0620 f7 e9 27 19 60 06 7e 06 5d 06 6f 86 0c 86 73 0c 5d 0c 1f 18 b1 8c c2 8c c6 8c 41 8c 79 8c 97 19 ..'.`.~.].o...s.].........A.y...
0640 fb 18 e7 99 e8 99 e4 99 1c 98 12 98 ca 98 6e 31 8d 31 c3 cc 42 cc c6 cc 21 cc f9 cc d7 98 87 98 ..............n1.1..B...!.......
0660 7f b1 70 b2 68 b3 f8 b2 e4 b0 d4 b3 3c 63 f9 c1 ca ce aa c5 ea cb 9a cb da c0 3a c8 fa 8b 8d 87 ..p.h.......<c............:.....
0680 4d 9f 2d 98 ad 80 ad 85 ed 2d 09 4d 12 23 59 93 e2 49 a7 48 5d a4 39 76 46 76 35 76 6f f6 5c f6 M.-......-.M.#Y..I.H].9vFv5vo.\.
06a0 6b ec af 39 50 1c 62 1c 36 1c c9 1c 67 39 7a 39 96 38 b9 38 0d 39 23 38 4b 39 ef 73 ce 71 31 73 k..9P.b.6...g9z9.8.8.9#8K9.s.q1s
06c0 69 71 05 71 15 71 dd e6 9a e6 66 e0 d6 e0 0e e4 2e e2 be c3 3d c3 c3 c4 a3 cd 13 c2 73 82 a7 93 iq.q.q....f.........=.......s...
06e0 67 9e 97 83 d7 88 37 96 b7 92 b7 8f 77 95 4f 98 cf 9e 2f 9d af 81 ef 2d 3f 9e 5f 99 df 8f bf 88 g.....7.....w.O.../....-?._.....
0700 bf 83 7f 5e 80 5b c0 5c 60 af c0 45 81 d7 82 94 82 ca 82 01 82 c7 05 bb 05 7f 08 09 0b 39 0a 1d ...^.[.\`..E.................9..
0720 14 6a 11 9a 12 66 15 36 16 4e 12 be 28 3c 22 42 2d a2 29 12 29 52 25 f2 42 14 2b aa 2c 1a 2c 5a .j...f.6.N..(<"B-.).)R%.B.+.,.,Z
0740 21 da 2f 86 12 53 10 0b 10 2b 13 7b 2a 8e 12 57 14 0f 14 af 10 1f d8 85 d9 a5 b2 2b 6c 57 d5 ae !./..S...+.{*..W...........+lW..
0760 61 09 82 84 b6 44 9c c4 45 89 71 49 66 49 33 c9 74 c9 16 c9 2f 52 02 52 2e 52 05 52 dd 52 bf a5 a....D..E.qIfI3.t.../R.R.R.R.R..
0780 15 a4 43 a4 cf 49 bf 91 a1 97 31 91 49 97 69 93 f9 26 2b 26 eb 2d 5b 26 fb 42 8e 5a ce 40 2e 45 ..C..I....1.I.i..&+&.-[&.B.Z.@.E
07a0 ae 55 6e 41 5e 5c de 57 fe 94 fc 4b 05 06 05 73 85 83 0a 1d 0a eb 8a 4a 8a 51 8a f5 8a d3 4a 02 .UnA^\.W...K...s.......J.Q....J.
07c0 4a 9e 4a e5 4a c3 ca 8c ca 56 ca 87 94 1f aa 60 54 74 54 52 54 da 55 56 54 15 55 63 54 af a9 7e J.J.J....V.....`TtTRT.UVT.UcT..~
07e0 55 93 50 0b 56 ab 53 9b da 2d bc db 77 f7 b9 dd 93 ea 7c ea 64 f5 4a f5 31 0d 1e 0d 4f 8d 33 1a U.P.V.S..-..w.....|.d.J.1...O.3.
0800 63 9a bc 9a 64 cd 2a cd 09 2d 7e 2d 1f ad 6a ad 4f da a2 da 41 da 97 b4 bf e8 48 eb 44 e9 34 e9 c...d.*..-~-..j.O...A.....H.D.4.
0820 fc d0 55 d5 dd a7 7b 57 0f d6 33 d4 cb d5 eb d3 a7 d7 b7 d7 3f a9 3f 6a c0 67 e0 6f 70 d1 60 de ..U...{W..3.........?.?j.g.op.`.
0840 50 c1 30 d9 f0 ae 11 c6 c8 d4 a8 c0 68 d8 98 d3 d8 db b8 d6 78 de 44 c9 64 9f 49 a7 29 c1 d4 d6 P.0.........h.......x.D.d.I.)...
0860 f4 a4 e9 84 99 98 59 94 59 9b 39 ca dc c4 fc 98 f9 88 85 a0 45 98 45 8b 25 b0 34 b6 3c 66 f9 d6 ......Y.Y.9.........E.E.%.4.<f..
0880 4a d8 2a d2 ea a6 35 d6 da ca ba cc fa a3 8d 8c cd 5e 9b 6e 5b 06 5b 0f db 3a db 65 3b 1d bb 7c J.*...5..........^.n[.[..:.e;..|
08a0 bb 37 f6 22 f6 b1 f6 1d 0e 34 0e 6e 0e b5 0e 3f 1c f5 1c 0b 1d c7 9c a4 9c f6 39 3d 76 26 39 07 .7.".....4.n...?..........9=v&9.
08c0 3a b7 ba e0 5c 1c 5c aa 5d 96 5c f5 5d 8b 5d 3f b8 29 b8 65 b9 0d ed 11 de 93 b0 a7 c7 9d e4 1e :...\.\.].\.].]?.).e............
08e0 e2 7e cb 83 c6 83 ec 71 dd 13 e3 e9 e8 59 e7 b9 46 b6 24 57 91 97 bc 8c bd ca bd e6 bd 75 bd 8f .~.....q.....Y..F.$W.........u..
0900 7b cf fa 68 f9 14 f9 4c fb aa fb 16 fa 7e f2 53 f7 2b f4 9b f2 57 f7 3f e6 3f 1d a0 19 50 12 30 {..h...L.....~.S.+...W.?.?...P.0
0920 17 a8 1b 78 32 70 21 c8 28 e8 74 d0 8f 60 cb e0 9a e0 8d 10 c7 90 86 50 8a 50 cf d0 1b 61 f4 61 ...x2p!.(.t..`.........P.P...a.a
0940 c1 61 9d e1 5c e1 09 e1 03 11 e2 11 59 11 63 91 aa 91 c5 91 f3 51 a6 51 d5 d1 50 f4 9e e8 d6 18 .a..\.......Y.c......Q.Q..P.....
0960 46 e4 55 a7 37 56 24 f6 40 ec 78 9c 46 5c 59 dc cf 78 87 f8 eb 09 74 09 61 09 bd 89 62 89 39 89 F.U.7V$.@.x.F\Y..x....t.a...b.9.
0980 9f 92 0c 92 ce 27 a3 93 bd 93 3b f6 f2 ee 4d db 3b be 4f 7b 5f e5 7e 68 bf d7 fe 8e 14 fe 94 cc .....'....;...M.;.O{_.~h........
09a0 94 0f a9 86 a9 17 d2 f0 69 c1 69 4f d2 a5 d3 0b d3 17 33 1c 33 da 32 39 33 53 33 27 0f 18 1e b8 ........i.iO......3.3.293S3'....
09c0 98 45 cc 8a ca 1a 3e a8 76 f0 74 36 3a 3b 30 bb 2f 47 2e a7 34 e7 77 ae 4f ee a3 3c e9 bc 92 bc .E....>.v.t6:;0./G..4.w.O..<....
09e0 b5 43 de 87 1e 1d 96 39 7c e2 f0 c6 11 bf 23 7d f9 8a f9 a7 8e 62 8f 86 1d 1d 2a d0 2c b8 50 48 .C.....9|.....#}.....b....*.,.PH
0a00 57 98 54 38 79 cc fc 58 73 11 4f 51 6e d1 62 b1 47 71 4f 89 7c c9 e9 e3 f8 e3 b1 c7 c7 4e 98 9d W.T8y..Xs.OQn.b.GqO.|........N..
0a20 68 2d 15 28 3d 5a ba 76 32 e0 e4 60 99 4e 59 43 39 47 79 4e f9 8f 0a 9f 8a 67 a7 b4 4e d5 9f e6 h-.(=Z.v2..`.NYC9GyN.....g..N...
0a40 3c 9d 77 fa d7 99 c0 33 2f 2b 0d 2b 9b ab 84 aa 4a ce 62 cf c6 9d fd 78 ce e1 5c f7 79 e5 f3 b5 <.w....3/+.+....J.b....x..\.y...
0a60 d5 a4 ea bc ea f5 9a b0 9a b1 0b 36 17 3a 6b 95 6a 6b eb 38 ea f2 2f a2 2e c6 5e 9c be e4 76 a9 ...........6.:k.jk.8../...^...v.
0a80 ff b2 de e5 d6 7a 89 fa ca 06 e6 86 bc 2b e0 4a ec 95 99 ab 9e 57 87 ae 99 5e eb b8 ae 7c bd be .....z.......+.J.....W...^...|..
0aa0 51 b0 b1 bc 89 a1 29 b7 19 6a 4e 6c 9e 6f 09 68 19 6b 75 6e 1d b8 61 72 a3 a3 4d ad ad e9 a6 e4 Q.....)..jNl.o.h.kun..ar..M.....
0ac0 cd 9a 76 de f6 b2 5b 4c b7 f2 6f e3 6f 67 de de b8 93 74 67 e9 6e c4 dd b9 7b fe f7 26 3b 3c 3a ..v...[L..o.og....tg.n...{..&;<:
0ae0 de dc 77 ba ff a2 d3 ba b3 af cb b4 eb e1 03 83 07 f7 bb b5 bb ef 3c 54 7f d8 de a3 da 73 e3 91 ..w...................<T.....s..
0b00 f2 a3 96 c7 8a 8f 9b 7b 15 7a 9b 9e 28 3c 69 ea 53 ec 6b 7e aa f4 b4 b5 5f a5 bf 6d 60 f7 c0 ed .......{.z..(<i.S.k~...._..m`...
0b20 67 9a cf ee 3d d7 7b fe e0 85 f1 8b c7 83 16 83 03 43 f6 43 2f 87 dd 86 c7 5e fa bc 9c 7a 15 f2 g...=.{..........C.C/....^...z..
0b40 6a e1 75 dc eb d5 37 a9 23 98 91 dc b7 b4 6f 4b 46 39 46 ab de 89 be 6b 18 53 1c bb 35 ae 37 de j.u...7.#.....oKF9F....k.S..5.7.
0b60 3b 61 3b f1 66 d2 7b 72 f6 7d f4 fb b5 0f 99 1f a9 3f 96 7c e2 fe 54 3b 25 3b d5 3e 6d 30 dd 3f ;a;.f.{r.}.......?.|..T;%;.>m0.?
0b80 e3 3a f3 61 36 62 76 75 2e eb 33 dd e7 f2 2f 22 5f 1a bf 6a 7d ed 9d 77 9a ff b0 10 b5 b0 f1 ed .:.a6bvu..3.../"_..j}..w........
0ba0 d0 77 b6 ef 35 8b f2 8b 1d 4b 56 4b a3 cb a1 cb ab 3f 72 7f b2 fd bc b0 a2 bc d2 fd cb f1 d7 a7 .w..5....KVK.....?r.............
0bc0 d5 f8 35 dc da 89 75 d1 f5 b6 df a6 bf 47 36 42 37 36 22 c8 51 e4 ad 57 01 18 a9 28 3f 3f 00 be ..5...u......G6B76".Q..W...(??..
0be0 d5 00 40 ed 0c 00 03 92 c7 e1 89 db f9 d7 4e 81 a1 cd b4 03 00 07 48 1f a5 0d 2b a3 59 31 78 2c ..@...........N.......H...+.Y1x,
0c00 05 4e 9a c2 99 32 03 7f 87 80 a5 26 13 5b 68 f1 74 21 f4 8f 18 15 98 ca 59 00 6b 30 5b 1f bb 22 .N...2.....&.[h.t!......Y.k0[.."
0c20 c7 51 ce 59 6e 2d 9e 7c de 01 7e bc 80 8a a0 b3 50 b0 70 a8 88 9b a8 8e 18 a7 d8 82 f8 83 5d a5 .Q.Yn-.|..~.....P.p...........].
0c40 12 c1 92 ea 52 d4 52 ef a4 1b 64 52 65 ad e5 78 e5 3e cb df 50 38 a0 68 ad c4 a1 f4 41 b9 5e 25 ....R.R...dRe..x.>..P8.h....A.^%
0c60 41 55 5b 0d af f6 7c 77 b9 ba 8f c6 2e 8d 6f 9a 2d 5a 7b b5 75 74 08 3a ef 74 6f eb d5 e9 57 18 AU[...|w......o.-Z{.ut.:.to...W.
0c80 14 18 ee 37 22 1b 6b 9a b0 9a 2c 98 f6 9a d5 9b 57 58 54 5a b6 5b 4d da 60 6c d9 ec 48 f6 b4 0e ...7".k...,.....WXTZ.[M.`l..H...
0ca0 b0 c3 9a e3 aa 33 70 a1 74 25 ba 51 ef 41 ef 59 72 9f f0 e8 f7 bc 4b be ee 55 ed 5d ea 93 eb 9b .....3p.t%.Q.A.Yr.....K..U.]....
0cc0 e8 e7 ef 6f 17 a0 13 28 1f 24 16 cc 1b c2 16 4a 13 06 87 2d 86 4f 44 f4 47 de 8c 3a 17 7d 24 26 ...o...(.$.....J...-.OD.G..:.}$&
0ce0 25 36 2b ae 29 01 9d e8 9b 74 77 2f d8 27 b4 5f 35 c5 38 d5 35 2d 36 fd 48 46 71 66 f2 01 f9 03 %6+.)....tw/.'._5.8.5-6.HFqf....
0d00 93 59 f9 07 ad b2 05 73 a8 72 41 1e ea 10 dd 61 91 23 1a f9 16 47 1d 0b 5c 0a 5d 8e 39 15 39 14 .Y.....s.rA....a.#...G..\.].9.9.
0d20 db 95 58 1f b7 38 61 5a 6a 78 52 a7 4c a3 5c a5 42 ee 94 c4 69 b1 33 d2 95 a6 55 19 67 c7 ce 1b ..X..8aZjxR.L.\.B...i.3...U.g...
0d40 57 5f aa 99 ad a5 ab 13 bc 28 73 49 ed b2 5e bd 79 83 e3 15 8f ab 01 d7 22 ae c7 37 ee 6f 4a 6f W_.......(sI..^.y......."..7.oJo
0d60 3e d0 92 dd 9a 77 23 bf ad f8 66 79 7b f5 ad c6 db 5d 77 86 ef 8e dd 1b ea 68 b8 ef d7 c9 da f9 >....w#...fy{....]w......h......
0d80 b0 ab e4 41 7c b7 df c3 3d 3d 8e 8f ac 1f 9b f6 1a 3e 31 ea b3 7b 1a d9 7f 6
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Mu - 072recipe.cc</title>
<meta name="Generator" content="Vim/8.0">
<meta name="plugin-version" content="vim7.4_v2">
<meta name="syntax" content="cpp">
<meta name="settings" content="number_lines,use_css,pre_wrap,no_foldcolumn,expand_tabs,line_ids,prevent_copy=">
<meta name="colorscheme" content="minimal">
<style type="text/css">
<!--
pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
a { color:#eeeeee; text-decoration: none; }
a:hover { text-decoration: underline; }
* { font-size: 12pt; font-size: 1em; }
.SalientComment { color: #00ffff; }
.LineNr { color: #444444; }
.Constant { color: #00a0a0; }
.muRecipe { color: #ff8700; }
.Delimiter { color: #800080; }
.Special { color: #c00000; }
.Identifier { color: #c0a020; }
.Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
.Comment { color: #9090ff; }
.Comment a { color:#0000ee; text-decoration:underline; }
.cSpecial { color: #008000; }
.traceContains { color: #008000; }
-->
</style>

<script type='text/javascript'>
<!--

/* function to open any folds containing a jumped-to line before jumping to it */
function JumpToLine()
{
  var lineNum;
  lineNum = window.location.hash;
  lineNum = lineNum.substr(1); /* strip off '#' */

  if (lineNum.indexOf('L') == -1) {
    lineNum = 'L'+lineNum;
  }
  lineElem = document.getElementById(lineNum);
  /* Always jump to new location even if the line was hidden inside a fold, or
   * we corrected the raw number to a line ID.
   */
  if (lineElem) {
    lineElem.scrollIntoView(true);
  }
  return true;
}
if ('onhashchange' in window) {
  window.onhashchange = JumpToLine;
}

-->
</script>
</head>
<body onload='JumpToLine();'>
<pre id='vimCodeElement'>
<span id="L1" class="LineNr">  1 </span><span class="Comment">//: So far we've been calling a fixed recipe in each instruction, but we'd</span>
<span id="L2" class="LineNr">  2 </span><span class="Comment">//: also like to make the recipe a variable, pass recipes to &quot;higher-order&quot;</span>
<span id="L3" class="LineNr">  3 </span><span class="Comment">//: recipes, return recipes from recipes and so on.</span>
<span id="L4" class="LineNr">  4 </span>
<span id="L5" class="LineNr">  5 </span><span class="Delimiter">:(scenario call_literal_recipe)</span>
<span id="L6" class="LineNr">  6 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L7" class="LineNr">  7 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>call f<span class="Delimiter">,</span> <span class="Constant">34</span>
<span id="L8" class="LineNr">  8 </span>]
<span id="L9" class="LineNr">  9 </span><span class="muRecipe">def</span> f x:num<span class="muRecipe"> -&gt; </span>y:num [
<span id="L10" class="LineNr"> 10 </span>  local-scope
<span id="L11" class="LineNr"> 11 </span>  load-ingredients
<span id="L12" class="LineNr"> 12 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L13" class="LineNr"> 13 </span>]
<span id="L14" class="LineNr"> 14 </span><span class="traceContains">+mem: storing 34 in location 1</span>
<span id="L15" class="LineNr"> 15 </span>
<span id="L16" class="LineNr"> 16 </span><span class="Delimiter">:(before &quot;End Mu Types Initialization&quot;)</span>
<span id="L17" class="LineNr"> 17 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;recipe-literal&quot;</span><span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
<span id="L18" class="LineNr"> 18 </span><span class="Comment">// 'recipe' variables can store recipe-literal</span>
<span id="L19" class="LineNr"> 19 </span><a href='010vm.cc.html#L125'>type_ordinal</a> <a href='010vm.cc.html#L19'>recipe</a> = <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">,</span> Next_type_ordinal++<span class="Delimiter">);</span>
<span id="L20" class="LineNr"> 20 </span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Type<span class="Delimiter">,</span> <a href='010vm.cc.html#L19'>recipe</a><span class="Delimiter">).</span>name = <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">;</span>
<span id="L21" class="LineNr"> 21 </span>
<span id="L22" class="LineNr"> 22 </span><span class="Delimiter">:(after &quot;Deduce Missing Type(x, caller)&quot;)</span>
<span id="L23" class="LineNr"> 23 </span><span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span>
<span id="L24" class="LineNr"> 24 </span>  <a href='072recipe.cc.html#L29'>try_initialize_recipe_literal</a><span class="Delimiter">(</span>x<span class="Delimiter">,</span> caller<span class="Delimiter">);</span>
<span id="L25" class="LineNr"> 25 </span><span class="Delimiter">:(before &quot;Type Check in Type-ingredient-aware check_or_set_types_by_name&quot;)</span>
<span id="L26" class="LineNr"> 26 </span><span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span>
<span id="L27" class="LineNr"> 27 </span>  <a href='072recipe.cc.html#L29'>try_initialize_recipe_literal</a><span class="Delimiter">(</span>x<span class="Delimiter">,</span> variant<span class="Delimiter">);</span>
<span id="L28" class="LineNr"> 28 </span><span class="Delimiter">:(code)</span>
<span id="L29" class="LineNr"> 29 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L29'>try_initialize_recipe_literal</a><span class="Delimiter">(</span>reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L30" class="LineNr"> 30 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
<span id="L31" class="LineNr"> 31 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
<span id="L32" class="LineNr"> 32 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L36'>contains_reagent_with_non_recipe_literal_type</a><span class="Delimiter">(</span>caller<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
<span id="L33" class="LineNr"> 33 </span>  x<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Constant">&quot;recipe-literal&quot;</span><span class="Delimiter">);</span>
<span id="L34" class="LineNr"> 34 </span>  x<span class="Delimiter">.</span><a href='010vm.cc.html#L67'>set_value</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">));</span>
<span id="L35" class="LineNr"> 35 </span><span class="Delimiter">}</span>
<span id="L36" class="LineNr"> 36 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L36'>contains_reagent_with_non_recipe_literal_type</a><span class="Delimiter">(</span><span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L37" class="LineNr"> 37 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L38" class="LineNr"> 38 </span>    <span class="Normal">const</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
<span id="L39" class="LineNr"> 39 </span>    <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
<span id="L40" class="LineNr"> 40 </span>      <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L46'>is_matching_non_recipe_literal</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> name<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Constant"> true</span><span class="Delimiter">;</span>
<span id="L41" class="LineNr"> 41 </span>    <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
<span id="L42" class="LineNr"> 42 </span>      <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L46'>is_matching_non_recipe_literal</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> name<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Constant"> true</span><span class="Delimiter">;</span>
<span id="L43" class="LineNr"> 43 </span>  <span class="Delimiter">}</span>
<span id="L44" class="LineNr"> 44 </span>  <span class="Identifier">return</span><span class="Constant"> false</span><span class="Delimiter">;</span>
<span id="L45" class="LineNr"> 45 </span><span class="Delimiter">}</span>
<span id="L46" class="LineNr"> 46 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L46'>is_matching_non_recipe_literal</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L47" class="LineNr"> 47 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>name != name<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Constant"> false</span><span class="Delimiter">;</span>
<span id="L48" class="LineNr"> 48 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Constant"> false</span><span class="Delimiter">;</span>
<span id="L49" class="LineNr"> 49 </span>  <span class="Identifier">return</span> !x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom || x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name != <span class="Constant">&quot;recipe-literal&quot;</span><span class="Delimiter">;</span>
<span id="L50" class="LineNr"> 50 </span><span class="Delimiter">}</span>
<span id="L51" class="LineNr"> 51 </span>
<span id="L52" class="LineNr"> 52 </span><span class="Comment">//: It's confusing to use variable names that are also recipe names. Always</span>
<span id="L53" class="LineNr"> 53 </span><span class="Comment">//: assume variable types override recipe literals.</span>
<span id="L54" class="LineNr"> 54 </span><span class="Delimiter">:(scenario error_on_recipe_literal_used_as_a_variable)</span>
<span id="L55" class="LineNr"> 55 </span><span class="Special">% Hide_errors = true;</span>
<span id="L56" class="LineNr"> 56 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L57" class="LineNr"> 57 </span>  local-scope
<span id="L58" class="LineNr"> 58 </span>  <span class="Normal">a</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>equal <span class="Identifier">break</span> <span class="Constant">0</span>
<span id="L59" class="LineNr"> 59 </span>  <span class="Identifier">break</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
<span id="L60" class="LineNr"> 60 </span>]
<span id="L61" class="LineNr"> 61 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: missing type for 'break' in 'a:bool &lt;- equal break, 0'</span>
<span id="L62" class="LineNr"> 62 </span>
<span id="L63" class="LineNr"> 63 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
<span id="L64" class="LineNr"> 64 </span>CALL<span class="Delimiter">,</span>
<span id="L65" class="LineNr"> 65 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
<span id="L66" class="LineNr"> 66 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;call&quot;</span><span class="Delimiter">,</span> CALL<span class="Delimiter">);</span>
<span id="L67" class="LineNr"> 67 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
<span id="L68" class="LineNr"> 68 </span><span class="Normal">case</span> CALL: <span class="Delimiter">{</span>
<span id="L69" class="LineNr"> 69 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
<span id="L70" class="LineNr"> 70 </span>    <a href='003trace.cc.html#L196'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'call' requires at least one ingredient (the <a href='010vm.cc.html#L19'>recipe</a> to call)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L225'>end</a><span class="Delimiter">();</span>
<span id="L71" class="LineNr"> 71 </span>    <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L72" class="LineNr"> 72 </span>  <span class="Delimiter">}</span>
<span id="L73" class="LineNr"> 73 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_recipe<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
<span id="L74" class="LineNr"> 74 </span>    <a href='003trace.cc.html#L196'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'call' should be a <a href='010vm.cc.html#L19'>recipe</a>, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L225'>end</a><span class="Delimiter">();</span>
<span id="L75" class="LineNr"> 75 </span>    <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L76" class="LineNr"> 76 </span>  <span class="Delimiter">}</span>
<span id="L77" class="LineNr"> 77 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L78" class="LineNr"> 78 </span><span class="Delimiter">}</span>
<span id="L79" class="LineNr"> 79 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
<span id="L80" class="LineNr"> 80 </span><span class="Normal">case</span> CALL: <span class="Delimiter">{</span>
<span id="L81" class="LineNr"> 81 </span>  <span class="Comment">// Begin Call</span>
<span id="L82" class="LineNr"> 82 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L83" class="LineNr"> 83 </span>    ++Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">;</span>
<span id="L84" class="LineNr"> 84 </span>    <a href='003trace.cc.html#L189'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;indirect 'call': incrementing callstack depth to &quot;</span> &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L225'>end</a><span class="Delimiter">();</span>
<span id="L85" class="LineNr"> 85 </span>    assert<span class="Delimiter">(</span>Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt; <span class="Constant">9000</span><span class="Delimiter">);</span>  <span class="Comment">// 9998-101 plus cushion</span>
<span id="L86" class="LineNr"> 86 </span>  <span class="Delimiter">}</span>
<span id="L87" class="LineNr"> 87 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
<span id="L88" class="LineNr"> 88 </span>    <a href='003trace.cc.html#L196'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to call empty <a href='010vm.cc.html#L19'>recipe</a> in '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; <a href='003trace.cc.html#L225'>end</a><span class="Delimiter">();</span>
<span id="L89" class="LineNr"> 89 </span>    <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L90" class="LineNr"> 90 </span>  <span class="Delimiter">}</span>
<span id="L91" class="LineNr"> 91 </span>  <span class="Normal">const</span> call&amp; caller_frame = <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">();</span>
<span id="L92" class="LineNr"> 92 </span>  <a href='010vm.cc.html#L33'>instruction</a><span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> call_instruction = <a href='026call.cc.html#L88'>to_instruction</a><span class="Delimiter">(</span>caller_frame<span class="Delimiter">);</span>
<span id="L93" class="LineNr"> 93 </span>  call_instruction<span class="Delimiter">.</span>operation = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
<span id="L94" class="LineNr"> 94 </span>  call_instruction<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>call_instruction<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">());</span>
<span id="L95" class="LineNr"> 95 </span>  Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>push_front<span class="Delimiter">(</span>call<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)));</span>
<span id="L96" class="LineNr"> 96 </span>  ingredients<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">());</span>  <span class="Comment">// drop the callee</span>
<span id="L97" class="LineNr"> 97 </span>  finish_call_housekeeping<span class="Delimiter">(</span>call_instruction<span class="Delimiter">,</span> ingredients<span class="Delimiter">);</span>
<span id="L98" class="LineNr"> 98 </span>  <span class="Comment">// not done with caller</span>
<span id="L99" class="LineNr"> 99 </span>  write_products =<span class="Constant"> false</span><span class="Delimiter">;</span>
<span id="L100" class="LineNr">100 </span>  fall_through_to_next_instruction =<span class="Constant"> false</span><span class="Delimiter">;</span>
<span id="L101" class="LineNr">101 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L102" class="LineNr">102 </span><span class="Delimiter">}</span>
<span id="L103" class="LineNr">103 </span>
<span id="L104" class="LineNr">104 </span><span class="Delimiter">:(scenario call_variable)</span>
<span id="L105" class="LineNr">105 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L106" class="LineNr">106 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f
<span id="L107" class="LineNr">107 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>call <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)},</span> <span class="Constant">34</span>
<span id="L108" class="LineNr">108 </span>]
<span id="L109" class="LineNr">109 </span><span class="muRecipe">def</span> f x:num<span class="muRecipe"> -&gt; </span>y:num [
<span id="L110" class="LineNr">110 </span>  local-scope
<span id="L111" class="LineNr">111 </span>  load-ingredients
<span id="L112" class="LineNr">112 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L113" class="LineNr">113 </span>]
<span id="L114" class="LineNr">114 </span><span class="traceContains">+mem: storing 34 in location 2</span>
<span id="L115" class="LineNr">115 </span>
<span id="L116" class="LineNr">116 </span><span class="Delimiter">:(scenario call_literal_recipe_repeatedly)</span>
<span id="L117" class="LineNr">117 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L118" class="LineNr">118 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>call f<span class="Delimiter">,</span> <span class="Constant">34</span>
<span id="L119" class="LineNr">119 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>call f<span class="Delimiter">,</span> <span class="Constant">35</span>
<span id="L120" class="LineNr">120 </span>]
<span id="L121" class="LineNr">121 </span><span class="muRecipe">def</span> f x:num<span class="muRecipe"> -&gt; </span>y:num [
<span id="L122" class="LineNr">122 </span>  local-scope
<span id="L123" class="LineNr">123 </span>  load-ingredients
<span id="L124" class="LineNr">124 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L125" class="LineNr">125 </span>]
<span id="L126" class="LineNr">126 </span><span class="traceContains">+mem: storing 34 in location 1</span>
<span id="L127" class="LineNr">127 </span><span class="traceContains">+mem: storing 35 in location 1</span>
<span id="L128" class="LineNr">128 </span>
<span id="L129" class="LineNr">129 </span><span class="Delimiter">:(scenario call_shape_shifting_recipe)</span>
<span id="L130" class="LineNr">130 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L131" class="LineNr">131 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>call f<span class="Delimiter">,</span> <span class="Constant">34</span>
<span id="L132" class="LineNr">132 </span>]
<span id="L133" class="LineNr">133 </span><span class="muRecipe">def</span> f x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
<span id="L134" class="LineNr">134 </span>  local-scope
<span id="L135" class="LineNr">135 </span>  load-ingredients
<span id="L136" class="LineNr">136 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L137" class="LineNr">137 </span>]
<span id="L138" class="LineNr">138 </span><span class="traceContains">+mem: storing 34 in location 1</span>
<span id="L139" class="LineNr">139 </span>
<span id="L140" class="LineNr">140 </span><span class="Delimiter">:(scenario call_shape_shifting_recipe_inside_shape_shifting_recipe)</span>
<span id="L141" class="LineNr">141 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L142" class="LineNr">142 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>f <span class="Constant">34</span>
<span id="L143" class="LineNr">143 </span>]
<span id="L144" class="LineNr">144 </span><span class="muRecipe">def</span> f x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
<span id="L145" class="LineNr">145 </span>  local-scope
<span id="L146" class="LineNr">146 </span>  load-ingredients
<span id="L147" class="LineNr">147 </span>  y<span class="Special"> &lt;- </span>call g x
<span id="L148" class="LineNr">148 </span>]
<span id="L149" class="LineNr">149 </span><span class="muRecipe">def</span> g x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
<span id="L150" class="LineNr">150 </span>  local-scope
<span id="L151" class="LineNr">151 </span>  load-ingredients
<span id="L152" class="LineNr">152 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L153" class="LineNr">153 </span>]
<span id="L154" class="LineNr">154 </span><span class="traceContains">+mem: storing 34 in location 1</span>
<span id="L155" class="LineNr">155 </span>
<span id="L156" class="LineNr">156 </span><span class="Delimiter">:(scenario call_shape_shifting_recipe_repeatedly_inside_shape_shifting_recipe)</span>
<span id="L157" class="LineNr">157 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L158" class="LineNr">158 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>f <span class="Constant">34</span>
<span id="L159" class="LineNr">159 </span>]
<span id="L160" class="LineNr">160 </span><span class="muRecipe">def</span> f x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
<span id="L161" class="LineNr">161 </span>  local-scope
<span id="L162" class="LineNr">162 </span>  load-ingredients
<span id="L163" class="LineNr">163 </span>  y<span class="Special"> &lt;- </span>call g x
<span id="L164" class="LineNr">164 </span>  y<span class="Special"> &lt;- </span>call g x
<span id="L165" class="LineNr">165 </span>]
<span id="L166" class="LineNr">166 </span><span class="muRecipe">def</span> g x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
<span id="L167" class="LineNr">167 </span>  local-scope
<span id="L168" class="LineNr">168 </span>  load-ingredients
<span id="L169" class="LineNr">169 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L170" class="LineNr">170 </span>]
<span id="L171" class="LineNr">171 </span><span class="traceContains">+mem: storing 34 in location 1</span>
<span id="L172" class="LineNr">172 </span>
<span id="L173" class="LineNr">173 </span><span class="SalientComment">//:: check types for 'call' instructions</span>
<span id="L174" class="LineNr">174 </span>
<span id="L175" class="LineNr">175 </span><span class="Delimiter">:(scenario call_check_literal_recipe)</span>
<span id="L176" class="LineNr">176 </span><span class="Special">% Hide_errors = true;</span>
<span id="L177" class="LineNr">177 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L178" class="LineNr">178 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>call f<span class="Delimiter">,</span> <span class="Constant">34</span>
<span id="L179" class="LineNr">179 </span>]
<span id="L180" class="LineNr">180 </span><span class="muRecipe">def</span> f x:point<span class="muRecipe"> -&gt; </span>y:point [
<span id="L181" class="LineNr">181 </span>  local-scope
<span id="L182" class="LineNr">182 </span>  load-ingredients
<span id="L183" class="LineNr">183 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L184" class="LineNr">184 </span>]
<span id="L185" class="LineNr">185 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: ingredient 0 has the wrong type at '1:num &lt;- call f, 34'</span>
<span id="L186" class="LineNr">186 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: product 0 has the wrong type at '1:num &lt;- call f, 34'</span>
<span id="L187" class="LineNr">187 </span>
<span id="L188" class="LineNr">188 </span><span class="Delimiter">:(scenario call_check_variable_recipe)</span>
<span id="L189" class="LineNr">189 </span><span class="Special">% Hide_errors = true;</span>
<span id="L190" class="LineNr">190 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L191" class="LineNr">191 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> point<span class="muRecipe"> -&gt; </span>point<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f
<span id="L192" class="LineNr">192 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>call <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> point<span class="muRecipe"> -&gt; </span>point<span class="Delimiter">)},</span> <span class="Constant">34</span>
<span id="L193" class="LineNr">193 </span>]
<span id="L194" class="LineNr">194 </span><span class="muRecipe">def</span> f x:point<span class="muRecipe"> -&gt; </span>y:point [
<span id="L195" class="LineNr">195 </span>  local-scope
<span id="L196" class="LineNr">196 </span>  load-ingredients
<span id="L197" class="LineNr">197 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L198" class="LineNr">198 </span>]
<span id="L199" class="LineNr">199 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: ingredient 0 has the wrong type at '2:num &lt;- call {1: (recipe point -&gt; point)}, 34'</span>
<span id="L200" class="LineNr">200 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: product 0 has the wrong type at '2:num &lt;- call {1: (recipe point -&gt; point)}, 34'</span>
<span id="L201" class="LineNr">201 </span>
<span id="L202" class="LineNr">202 </span><span class="Delimiter">:(before &quot;End resolve_ambiguous_call(r, index, inst, caller_recipe) Special-cases&quot;)</span>
<span id="L203" class="LineNr">203 </span><span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;call&quot;</span> &amp;&amp; !inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; <a href='072recipe.cc.html#L208'>is_recipe_literal</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
<span id="L204" class="LineNr">204 </span>  <a href='072recipe.cc.html#L211'>resolve_indirect_ambiguous_call</a><span class="Delimiter">(</span>r<span class="Delimiter">,</span> index<span class="Delimiter">,</span> inst<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">);</span>
<span id="L205" class="LineNr">205 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
<span id="L206" class="LineNr">206 </span><span class="Delimiter">}</span>
<span id="L207" class="LineNr">207 </span><span class="Delimiter">:(code)</span>
<span id="L208" class="LineNr">208 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L208'>is_recipe_literal</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L209" class="LineNr">209 </span>  <span class="Identifier">return</span> x<span class="Delimiter">.</span>type &amp;&amp; x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom &amp;&amp; x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;recipe-literal&quot;</span><span class="Delimiter">;</span>
<span id="L210" class="LineNr">210 </span><span class="Delimiter">}</span>
<span id="L211" class="LineNr">211 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L211'>resolve_indirect_ambiguous_call</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">,</span> <span class="Normal">int</span> index<span class="Delimiter">,</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller_recipe<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L212" class="LineNr">212 </span>  <a href='010vm.cc.html#L33'>instruction</a> inst2<span class="Delimiter">;</span>
<span id="L213" class="LineNr">213 </span>  inst2<span class="Delimiter">.</span>name = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">;</span>
<span id="L214" class="LineNr">214 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Comment">/*</span><span class="Comment">skip <a href='010vm.cc.html#L19'>recipe</a></span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
<span id="L215" class="LineNr">215 </span>    inst2<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
<span id="L216" class="LineNr">216 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
<span id="L217" class="LineNr">217 </span>    inst2<span class="Delimiter">.</span>products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
<span id="L218" class="LineNr">218 </span>  <a href='054static_dispatch.cc.html#L173'>resolve_ambiguous_call</a><span class="Delimiter">(</span>r<span class="Delimiter">,</span> index<span class="Delimiter">,</span> inst2<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">);</span>
<span id="L219" class="LineNr">219 </span>  inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name = inst2<span class="Delimiter">.</span>name<span class="Delimiter">;</span>
<span id="L220" class="LineNr">220 </span>  inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span><a href='010vm.cc.html#L67'>set_value</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> inst2<span class="Delimiter">.</span>name<span class="Delimiter">));</span>
<span id="L221" class="LineNr">221 </span><span class="Delimiter">}</span>
<span id="L222" class="LineNr">222 </span>
<span id="L223" class="LineNr">223 </span><span class="Delimiter">:(after &quot;Transform.push_back(check_instruction)&quot;)</span>
<span id="L224" class="LineNr">224 </span>Transform<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='072recipe.cc.html#L226'>check_indirect_calls_against_header</a><span class="Delimiter">);</span>  <span class="Comment">// idempotent</span>
<span id="L225" class="LineNr">225 </span><span class="Delimiter">:(code)</span>
<span id="L226" class="LineNr">226 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L226'>check_indirect_calls_against_header</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L227" class="LineNr">227 </span>  <a href='003trace.cc.html#L189'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- type-check 'call' instructions inside <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L225'>end</a><span class="Delimiter">();</span>
<span id="L228" class="LineNr">228 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
<span id="L229" class="LineNr">229 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L230" class="LineNr">230 </span>    <span class="Normal">const</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
<span id="L231" class="LineNr">231 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>!is_indirect_call<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L232" class="LineNr">232 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// error raised above</span>
<span id="L233" class="LineNr">233 </span>    <span class="Normal">const</span> reagent&amp; callee = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
<span id="L234" class="LineNr">234 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_recipe<span class="Delimiter">(</span>callee<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// error raised above</span>
<span id="L235" class="LineNr">235 </span>    <span class="Normal">const</span> <a href='010vm.cc.html#L19'>recipe</a> callee_header = is_literal<span class="Delimiter">(</span>callee<span class="Delimiter">)</span> ? get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> callee<span class="Delimiter">.</span>value<span class="Delimiter">)</span> : <a href='072recipe.cc.html#L268'>from_reagent</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
<span id="L236" class="LineNr">236 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>!callee_header<span class="Delimiter">.</span>has_header<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L237" class="LineNr">237 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L257'>is_indirect_call_with_ingredients</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">))</span> <span class="Delimiter">{</span>
<span id="L238" class="LineNr">238 </span>      <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Comment">/*</span><span class="Comment">skip callee</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>callee_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span>+<span class="Comment">/*</span><span class="Comment">skip callee</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L239" class="LineNr">239 </span>        <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>callee_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i-<span class="Comment">/*</span><span class="Comment">skip callee</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">),</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
<span id="L240" class="LineNr">240 </span>          <a href='003trace.cc.html#L196'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;ingredient &quot;</span> &lt;&lt; i-<span class="Comment">/*</span><span class="Comment">skip callee</span><span class="Comment">*/</span><span class="Constant">1</span> &lt;&lt; <span class="Constant">&quot; has the wrong type at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L225'>end</a><span class="Delimiter">();</span>
<span id="L241" class="LineNr">241 </span>      <span class="Delimiter">}</span>
<span id="L242" class="LineNr">242 </span>    <span class="Delimiter">}</span>
<span id="L243" class="LineNr">243 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L262'>is_indirect_call_with_products</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">))</span> <span class="Delimiter">{</span>
<span id="L244" class="LineNr">244 </span>      <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>callee_header<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L245" class="LineNr">245 </span>        <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L246" class="LineNr">246 </span>        <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>callee_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
<span id="L247" class="LineNr">247 </span>          <a href='003trace.cc.html#L196'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product &quot;</span> &lt;&lt; i &lt;&lt; <span class="Constant">&quot; has the wrong type at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L225'>end</a><span class="Delimiter">();</span>
<span id="L248" class="LineNr">248 </span>      <span class="Delimiter">}</span>
<span id="L249" class="LineNr">249 </span>    <span class="Delimiter">}</span>
<span id="L250" class="LineNr">250 </span>  <span class="Delimiter">}</span>
<span id="L251" class="LineNr">251 </span><span class="Delimiter">}</span>
<span id="L252" class="LineNr">252 </span>
<span id="L253" class="LineNr">253 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L253'>is_indirect_call</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L254" class="LineNr">254 </span>  <span class="Identifier">return</span> <a href='072recipe.cc.html#L257'>is_indirect_call_with_ingredients</a><span class="Delimiter">(</span>r<span class="Delimiter">)</span> || <a href='072recipe.cc.html#L262'>is_indirect_call_with_products</a><span class="Delimiter">(</span>r<span class="Delimiter">);</span>
<span id="L255" class="LineNr">255 </span><span class="Delimiter">}</span>
<span id="L256" class="LineNr">256 </span>
<span id="L257" class="LineNr">257 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L257'>is_indirect_call_with_ingredients</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L258" class="LineNr">258 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r == CALL<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Constant"> true</span><span class="Delimiter">;</span>
<span id="L259" class="LineNr">259 </span>  <span class="Comment">// End is_indirect_call_with_ingredients Special-cases</span>
<span id="L260" class="LineNr">260 </span>  <span class="Identifier">return</span><span class="Constant"> false</span><span class="Delimiter">;</span>
<span id="L261" class="LineNr">261 </span><span class="Delimiter">}</span>
<span id="L262" class="LineNr">262 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L262'>is_indirect_call_with_products</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L263" class="LineNr">263 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r == CALL<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Constant"> true</span><span class="Delimiter">;</span>
<span id="L264" class="LineNr">264 </span>  <span class="Comment">// End is_indirect_call_with_products Special-cases</span>
<span id="L265" class="LineNr">265 </span>  <span class="Identifier">return</span><span class="Constant"> false</span><span class="Delimiter">;</span>
<span id="L266" class="LineNr">266 </span><span class="Delimiter">}</span>
<span id="L267" class="LineNr">267 </span>
<span id="L268" class="LineNr">268 </span><span class="muRecipe"><a href='010vm.cc.html#L19'>recipe</a></span> <a href='072recipe.cc.html#L268'>from_reagent</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L269" class="LineNr">269 </span>  assert<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
<span id="L270" class="LineNr">270 </span>  <a href='010vm.cc.html#L19'>recipe</a> result_header<span class="Delimiter">;</span>  <span class="Comment">// will contain only ingredients and products, nothing else</span>
<span id="L271" class="LineNr">271 </span>  result_header<span class="Delimiter">.</span>has_header =<span class="Constant"> true</span><span class="Delimiter">;</span>
<span id="L272" class="LineNr">272 </span>  <span class="Comment">// Begin Reagent-&gt;Recipe(r, recipe_header)</span>
<span id="L273" class="LineNr">273 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L274" class="LineNr">274 </span>    assert<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">);</span>
<span id="L275" class="LineNr">275 </span>    <span class="Identifier">return</span> result_header<span class="Delimiter">;</span>
<span id="L276" class="LineNr">276 </span>  <span class="Delimiter">}</span>
<span id="L277" class="LineNr">277 </span>  <span class="Normal">const</span> type_tree* root_type = r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom ? r<span class="Delimiter">.</span>type : r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">;</span>
<span id="L278" class="LineNr">278 </span>  assert<span class="Delimiter">(</span>root_type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
<span id="L279" class="LineNr">279 </span>  assert<span class="Delimiter">(</span>root_type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">);</span>
<span id="L280" class="LineNr">280 </span>  <span class="Normal">const</span> type_tree* curr = r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">;</span>
<span id="L281" class="LineNr">281 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">nada</span><span class="Comment">*/</span><span class="Delimiter">;</span>  curr &amp;&amp; !curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">;</span>  curr = curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L282" class="LineNr">282 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom &amp;&amp; curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;-&gt;&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L283" class="LineNr">283 </span>      curr = curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">;</span>  <span class="Comment">// skip delimiter</span>
<span id="L284" class="LineNr">284 </span>      <span class="Identifier">goto</span> read_products<span class="Delimiter">;</span>
<span id="L285" class="LineNr">285 </span>    <span class="Delimiter">}</span>
<span id="L286" class="LineNr">286 </span>    result_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='072recipe.cc.html#L330'>next_recipe_reagent</a><span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">));</span>
<span id="L287" class="LineNr">287 </span>  <span class="Delimiter">}</span>
<span id="L288" class="LineNr">288 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L289" class="LineNr">289 </span>    assert<span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
<span id="L290" class="LineNr">290 </span>    result_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='072recipe.cc.html#L330'>next_recipe_reagent</a><span class="Delimiter">(</span>curr<span class="Delimiter">));</span>
<span id="L291" class="LineNr">291 </span>    <span class="Identifier">return</span> result_header<span class="Delimiter">;</span>  <span class="Comment">// no products</span>
<span id="L292" class="LineNr">292 </span>  <span class="Delimiter">}</span>
<span id="L293" class="LineNr">293 </span>  <span class="Normal">read_products</span>:
<span id="L294" class="LineNr">294 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">nada</span><span class="Comment">*/</span><span class="Delimiter">;</span>  curr &amp;&amp; !curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">;</span>  curr = curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span>
<span id="L295" class="LineNr">295 </span>    result_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='072recipe.cc.html#L330'>next_recipe_reagent</a><span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">));</span>
<span id="L296" class="LineNr">296 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L297" class="LineNr">297 </span>    assert<span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
<span id="L298" class="LineNr">298 </span>    result_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='072recipe.cc.html#L330'>next_recipe_reagent</a><span class="Delimiter">(</span>curr<span class="Delimiter">));</span>
<span id="L299" class="LineNr">299 </span>  <span class="Delimiter">}</span>
<span id="L300" class="LineNr">300 </span>  <span class="Identifier">return</span> result_header<span class="Delimiter">;</span>
<span id="L301" class="LineNr">301 </span><span class="Delimiter">}</span>
<span id="L302" class="LineNr">302 </span>
<span id="L303" class="LineNr">303 </span><span class="Delimiter">:(before &quot;End Unit Tests&quot;)</span>
<span id="L304" class="LineNr">304 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L304'>test_from_reagent_atomic</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L305" class="LineNr">305 </span>  reagent a<span class="Delimiter">(</span><span class="Constant">&quot;{f: recipe}&quot;</span><span class="Delimiter">);</span>
<span id="L306" class="LineNr">306 </span>  <a href='010vm.cc.html#L19'>recipe</a> r_header = <a href='072recipe.cc.html#L268'>from_reagent</a><span class="Delimiter">(</span>a<span class="Delimiter">);</span>
<span id="L307" class="LineNr">307 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
<span id="L308" class="LineNr">308 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
<span id="L309" class="LineNr">309 </span><span class="Delimiter">}</span>
<span id="L310" class="LineNr">310 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L310'>test_from_reagent_non_atomic</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L311" class="LineNr">311 </span>  reagent a<span class="Delimiter">(</span><span class="Constant">&quot;{f: (recipe number -&gt; number)}&quot;</span><span class="Delimiter">);</span>
<span id="L312" class="LineNr">312 </span>  <a href='010vm.cc.html#L19'>recipe</a> r_header = <a href='072recipe.cc.html#L268'>from_reagent</a><span class="Delimiter">(</span>a<span class="Delimiter">);</span>
<span id="L313" class="LineNr">313 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
<span id="L314" class="LineNr">314 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
<span id="L315" class="LineNr">315 </span><span class="Delimiter">}</span>
<span id="L316" class="LineNr">316 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L316'>test_from_reagent_reads_ingredient_at_end</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L317" class="LineNr">317 </span>  reagent a<span class="Delimiter">(</span><span class="Constant">&quot;{f: (recipe number number)}&quot;</span><span class="Delimiter">);</span>
<span id="L318" class="LineNr">318 </span>  <a href='010vm.cc.html#L19'>recipe</a> r_header = <a href='072recipe.cc.html#L268'>from_reagent</a><span class="Delimiter">(</span>a<span class="Delimiter">);</span>
<span id="L319" class="LineNr">319 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <span class="Constant">2</span><span class="Delimiter">);</span>
<span id="L320" class="LineNr">320 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
<span id="L321" class="LineNr">321 </span><span class="Delimiter">}</span>
<span id="L322" class="LineNr">322 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L322'>test_from_reagent_reads_sole_ingredient_at_end</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L323" class="LineNr">323 </span>  reagent a<span class="Delimiter">(</span><span class="Constant">&quot;{f: (recipe number)}&quot;</span><span class="Delimiter">);</span>
<span id="L324" class="LineNr">324 </span>  <a href='010vm.cc.html#L19'>recipe</a> r_header = <a href='072recipe.cc.html#L268'>from_reagent</a><span class="Delimiter">(</span>a<span class="Delimiter">);</span>
<span id="L325" class="LineNr">325 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
<span id="L326" class="LineNr">326 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
<span id="L327" class="LineNr">327 </span><span class="Delimiter">}</span>
<span id="L328" class="LineNr">328 </span>
<span id="L329" class="LineNr">329 </span><span class="Delimiter">:(code)</span>
<span id="L330" class="LineNr">330 </span>reagent <a href='072recipe.cc.html#L330'>next_recipe_reagent</a><span class="Delimiter">(</span><span class="Normal">const</span> type_tree* curr<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L331" class="LineNr">331 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">)</span> <span class="Identifier">return</span> reagent<span class="Delimiter">(</span><span class="Constant">&quot;recipe:&quot;</span>+curr<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
<span id="L332" class="LineNr">332 </span>  <span class="Identifier">return</span> reagent<span class="Delimiter">(</span><span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*curr<span class="Delimiter">));</span>
<span id="L333" class="LineNr">333 </span><span class="Delimiter">}</span>
<span id="L334" class="LineNr">334 </span>
<span id="L335" class="LineNr">335 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L335'>is_mu_recipe</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L336" class="LineNr">336 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!r<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Constant"> false</span><span class="Delimiter">;</span>
<span id="L337" class="LineNr">337 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L338" class="LineNr">338 </span>    <span class="Comment">// End is_mu_recipe Atom Cases(r)</span>
<span id="L339" class="LineNr">339 </span>    <span class="Identifier">return</span> r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;recipe-literal&quot;</span><span class="Delimiter">;</span>
<span id="L340" class="LineNr">340 </span>  <span class="Delimiter">}</span>
<span id="L341" class="LineNr">341 </span>  <span class="Identifier">return</span> r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom &amp;&amp; r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">;</span>
<span id="L342" class="LineNr">342 </span><span class="Delimiter">}</span>
<span id="L343" class="LineNr">343 </span>
<span id="L344" class="LineNr">344 </span><span class="Delimiter">:(scenario copy_typecheck_recipe_variable)</span>
<span id="L345" class="LineNr">345 </span><span class="Special">% Hide_errors = true;</span>
<span id="L346" class="LineNr">346 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L347" class="LineNr">347 </span>  <span class="Constant">3</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>  <span class="Comment"># abc def</span>
<span id="L348" class="LineNr">348 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f  <span class="Comment"># store literal in a matching variable</span>
<span id="L349" class="LineNr">349 </span>  <span class="Delimiter">{</span><span class="Constant">2</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> boolean<span class="muRecipe"> -&gt; </span>boolean<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span>  <span class="Comment"># mismatch between recipe variables</span>
<span id="L350" class="LineNr">350 </span>]
<span id="L351" class="LineNr">351 </span><span class="muRecipe">def</span> f x:num<span class="muRecipe"> -&gt; </span>y:num [
<span id="L352" class="LineNr">352 </span>  local-scope
<span id="L353" class="LineNr">353 </span>  load-ingredients
<span id="L354" class="LineNr">354 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L355" class="LineNr">355 </span>]
<span id="L356" class="LineNr">356 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: can't copy '{1: (recipe number -&gt; number)}' to '{2: (recipe boolean -&gt; boolean)}'; types don't match</span>
<span id="L357" class="LineNr">357 </span>
<span id="L358" class="LineNr">358 </span><span class="Delimiter">:(scenario copy_typecheck_recipe_variable_2)</span>
<span id="L359" class="LineNr">359 </span><span class="Special">% Hide_errors = true;</span>
<span id="L360" class="LineNr">360 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L361" class="LineNr">361 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f  <span class="Comment"># mismatch with a recipe literal</span>
<span id="L362" class="LineNr">362 </span>]
<span id="L363" class="LineNr">363 </span><span class="muRecipe">def</span> f x:<span class="Normal">bool</span><span class="muRecipe"> -&gt; </span>y:<span class="Normal">bool</span> [
<span id="L364" class="LineNr">364 </span>  local-scope
<span id="L365" class="LineNr">365 </span>  load-ingredients
<span id="L366" class="LineNr">366 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L367" class="LineNr">367 </span>]
<span id="L368" class="LineNr">368 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: can't copy 'f' to '{1: (recipe number -&gt; number)}'; types don't match</span>
<span id="L369" class="LineNr">369 </span>
<span id="L370" class="LineNr">370 </span><span class="Delimiter">:(before &quot;End Matching Types For Literal(to)&quot;)</span>
<span id="L371" class="LineNr">371 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L335'>is_mu_recipe</a><span class="Delimiter">(</span>to<span class="Delimiter">))</span> <span class="Delimiter">{</span>
<span id="L372" class="LineNr">372 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> from<span class="Delimiter">.</span>value<span class="Delimiter">))</span> <span class="Delimiter">{</span>
<span id="L373" class="LineNr">373 </span>    <a href='003trace.cc.html#L196'>raise</a> &lt;&lt; <span class="Constant">&quot;trying to store <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; from<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; into &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>to<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but there's no such recipe</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
<span id="L374" class="LineNr">374 </span>    <span class="Identifier">return</span><span class="Constant"> false</span><span class="Delimiter">;</span>
<span id="L375" class="LineNr">375 </span>  <span class="Delimiter">}</span>
<span id="L376" class="LineNr">376 </span>  <span class="Normal">const</span> recipe&amp; rrhs = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> from<span class="Delimiter">.</span>value<span class="Delimiter">);</span>
<span id="L377" class="LineNr">377 </span>  <span class="Normal">const</span> recipe&amp; rlhs = <a href='072recipe.cc.html#L268'>from_reagent</a><span class="Delimiter">(</span>to<span class="Delimiter">);</span>
<span id="L378" class="LineNr">378 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>rlhs<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>rrhs<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L379" class="LineNr">379 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>!types_match<span class="Delimiter">(</span>rlhs<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> rrhs<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
<span id="L380" class="LineNr">380 </span>      <span class="Identifier">return</span><span class="Constant"> false</span><span class="Delimiter">;</span>
<span id="L381" class="LineNr">381 </span>  <span class="Delimiter">}</span>
<span id="L382" class="LineNr">382 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>rlhs<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>rrhs<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L383" class="LineNr">383 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>!types_match<span class="Delimiter">(</span>rlhs<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> rrhs<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
<span id="L384" class="LineNr">384 </span>      <span class="Identifier">return</span><span class="Constant"> false</span><span class="Delimiter">;</span>
<span id="L385" class="LineNr">385 </span>  <span class="Delimiter">}</span>
<span id="L386" class="LineNr">386 </span>  <span class="Identifier">return</span><span class="Constant"> true</span><span class="Delimiter">;</span>
<span id="L387" class="LineNr">387 </span><span class="Delimiter">}</span>
<span id="L388" class="LineNr">388 </span>
<span id="L389" class="LineNr">389 </span><span class="Delimiter">:(scenario call_variable_compound_ingredient)</span>
<span id="L390" class="LineNr">390 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L391" class="LineNr">391 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> <span class="Delimiter">(</span><a href='043space.cc.html#L101'>address</a> number<span class="Delimiter">)</span><span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f
<span id="L392" class="LineNr">392 </span>  <span class="Constant">2</span>:&amp;:num<span class="Special"> &lt;- </span>copy<span class="Constant"> null</span>
<span id="L393" class="LineNr">393 </span>  <span class="Constant">3</span>:num<span class="Special"> &lt;- </span>call <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> <span class="Delimiter">(</span><a href='043space.cc.html#L101'>address</a> number<span class="Delimiter">)</span><span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)},</span> <span class="Constant">2</span>:&amp;:num
<span id="L394" class="LineNr">394 </span>]
<span id="L395" class="LineNr">395 </span><span class="muRecipe">def</span> f x:&amp;:num<span class="muRecipe"> -&gt; </span>y:num [
<span id="L396" class="LineNr">396 </span>  local-scope
<span id="L397" class="LineNr">397 </span>  load-ingredients
<span id="L398" class="LineNr">398 </span>  y<span class="Special"> &lt;- </span>deaddress x
<span id="L399" class="LineNr">399 </span>]
<span id="L400" class="LineNr">400 </span>$error: <span class="Constant">0</span>
<span id="L401" class="LineNr">401 </span>
<span id="L402" class="LineNr">402 </span><span class="Comment">//: make sure we don't accidentally break on a recipe literal</span>
<span id="L403" class="LineNr">403 </span><span class="Delimiter">:(scenario jump_forbidden_on_recipe_literals)</span>
<span id="L404" class="LineNr">404 </span><span class="Special">% Hide_errors = true;</span>
<span id="L405" class="LineNr">405 </span><span class="muRecipe">def</span> foo [
<span id="L406" class="LineNr">406 </span>  local-scope
<span id="L407" class="LineNr">407 </span>]
<span id="L408" class="LineNr">408 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L409" class="LineNr">409 </span>  local-scope
<span id="L410" class="LineNr">410 </span>  <span class="Delimiter">{</span>
<span id="L411" class="LineNr">411 </span>    <span class="Identifier">break</span>-<span class="Normal">if</span> foo
<span id="L412" class="LineNr">412 </span>  <span class="Delimiter">}</span>
<span id="L413" class="LineNr">413 </span>]
<span id="L414" class="LineNr">414 </span><span class="Comment"># error should be as if foo is not a recipe</span>
<span id="L415" class="LineNr">415 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: missing type for 'foo' in 'break-if foo'</span>
<span id="L416" class="LineNr">416 </span>
<span id="L417" class="LineNr">417 </span><span class="Delimiter">:(before &quot;End JUMP_IF Checks&quot;)</span>
<span id="L418" class="LineNr">418 </span><a href='072recipe.cc.html#L422'>check_for_recipe_literals</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">));</span>
<span id="L419" class="LineNr">419 </span><span class="Delimiter">:(before &quot;End JUMP_UNLESS Checks&quot;)</span>
<span id="L420" class="LineNr">420 </span><a href='072recipe.cc.html#L422'>check_for_recipe_literals</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">));</span>
<span id="L421" class="LineNr">421 </span><span class="Delimiter">:(code)</span>
<span id="L422" class="LineNr">422 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L422'>check_for_recipe_literals</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L423" class="LineNr">423 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L424" class="LineNr">424 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L335'>is_mu_recipe</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
<span id="L425" class="LineNr">425 </span>      <a href='003trace.cc.html#L196'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;missing type for '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;' in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L225'>end</a><span class="Delimiter">();</span>
<span id="L426" class="LineNr">426 </span>      <span class="Normal">if</span> <span class="Delimiter">(</span>is_present_in_ingredients<span class="Delimiter">(</span>caller<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">))</span>
<span id="L427" class="LineNr">427 </span>        <a href='003trace.cc.html#L196'>raise</a> &lt;&lt; <span class="Constant">&quot;  did you forget 'load-ingredients'?</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L225'>end</a><span class="Delimiter">();</span>
<span id="L428" class="LineNr">428 </span>    <span class="Delimiter">}</span>
<span id="L429" class="LineNr">429 </span>  <span class="Delimiter">}</span>
<span id="L430" class="LineNr">430 </span><span class="Delimiter">}</span>
<span id="L431" class="LineNr">431 </span>
<span id="L432" class="LineNr">432 </span><span class="Delimiter">:(scenario load_ingredients_missing_error_3)</span>
<span id="L433" class="LineNr">433 </span><span class="Special">% Hide_errors = true;</span>
<span id="L434" class="LineNr">434 </span><span class="muRecipe">def</span> foo <span class="Delimiter">{</span>f: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> num<span class="muRecipe"> -&gt; </span>num<span class="Delimiter">)}</span> [
<span id="L435" class="LineNr">435 </span>  local-scope
<span id="L436" class="LineNr">436 </span>  <span class="Normal">b</span>:num<span class="Special"> &lt;- </span>call f<span class="Delimiter">,</span> <span class="Constant">1</span>
<span id="L437" class="LineNr">437 </span>]
<span id="L438" class="LineNr">438 </span><span class="traceContains">+error: foo: missing type for 'f' in 'b:num &lt;- call f, 1'</span>
<span id="L439" class="LineNr">439 </span><span class="traceContains">+error:   did you forget 'load-ingredients'?</span>
<span id="L440" class="LineNr">440 </span>
<span id="L441" class="LineNr">441 </span><span class="Delimiter">:(before &quot;End Mu Types Initialization&quot;)</span>
<span id="L442" class="LineNr">442 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Type_abbreviations<span class="Delimiter">,</span> <span class="Constant">&quot;function&quot;</span><span class="Delimiter">,</span> <a href='019type_abbreviations.cc.html#L58'>new_type_tree</a><span class="Delimiter">(</span><span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">));</span>
<span id="L443" class="LineNr">443 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Type_abbreviations<span class="Delimiter">,</span> <span class="Constant">&quot;fn&quot;</span><span class="Delimiter">,</span> <a href='019type_abbreviations.cc.html#L58'>new_type_tree</a><span class="Delimiter">(</span><span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">));</span>
<span id="L444" class="LineNr">444 </span>
<span id="L445" class="LineNr">445 </span><span class="Comment">//: copying functions to variables</span>
<span id="L446" class="LineNr">446 </span>
<span id="L447" class="LineNr">447 </span><span class="Delimiter">:(scenario copy_recipe_to_variable)</span>
<span id="L448" class="LineNr">448 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L449" class="LineNr">449 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span>fn number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f
<span id="L450" class="LineNr">450 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>call <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span>function number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)},</span> <span class="Constant">34</span>
<span id="L451" class="LineNr">451 </span>]
<span id="L452" class="LineNr">452 </span><span class="muRecipe">def</span> f x:num<span class="muRecipe"> -&gt; </span>y:num [
<span id="L453" class="LineNr">453 </span>  local-scope
<span id="L454" class="LineNr">454 </span>  load-ingredients
<span id="L455" class="LineNr">455 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L456" class="LineNr">456 </span>]
<span id="L457" class="LineNr">457 </span><span class="traceContains">+mem: storing 34 in location 2</span>
<span id="L458" class="LineNr">458 </span>
<span id="L459" class="LineNr">459 </span><span class="Delimiter">:(scenario copy_overloaded_recipe_to_variable)</span>
<span id="L460" class="LineNr">460 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L461" class="LineNr">461 </span>  local-scope
<span id="L462" class="LineNr">462 </span>  <span class="Delimiter">{</span>x: <span class="Delimiter">(</span>fn num<span class="muRecipe"> -&gt; </span>num<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f
<span id="L463" class="LineNr">463 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>call x<span class="Delimiter">,</span> <span class="Constant">34</span>
<span id="L464" class="LineNr">464 </span>]
<span id="L465" class="LineNr">465 </span><span class="Comment"># variant f</span>
<span id="L466" class="LineNr">466 </span><span class="muRecipe">def</span> f x:<span class="Normal">bool</span><span class="muRecipe"> -&gt; </span>y:<span class="Normal">bool</span> [
<span id="L467" class="LineNr">467 </span>  local-scope
<span id="L468" class="LineNr">468 </span>  load-ingredients
<span id="L469" class="LineNr">469 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L470" class="LineNr">470 </span>]
<span id="L471" class="LineNr">471 </span><span class="Comment"># variant f_2</span>
<span id="L472" class="LineNr">472 </span><span class="muRecipe">def</span> f x:num<span class="muRecipe"> -&gt; </span>y:num [
<span id="L473" class="LineNr">473 </span>  local-scope
<span id="L474" class="LineNr">474 </span>  load-ingredients
<span id="L475" class="LineNr">475 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L476" class="LineNr">476 </span>]
<span id="L477" class="LineNr">477 </span><span class="Comment"># x contains f_2</span>
<span id="L478" class="LineNr">478 </span><span class="traceContains">+mem: storing 34 in location 1</span>
<span id="L479" class="LineNr">479 </span>
<span id="L480" class="LineNr">480 </span><span class="Delimiter">:(before &quot;End resolve_ambiguous_call(r, index, inst, caller_recipe) Special-cases&quot;)</span>
<span id="L481" class="LineNr">481 </span><span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;copy&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L482" class="LineNr">482 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L483" class="LineNr">483 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>!is_recipe_literal<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L484" class="LineNr">484 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span><a href='054static_dispatch.cc.html#L326'>non_ghost_size</a><span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Recipe_variants<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">))</span> &lt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L485" class="LineNr">485 </span>    <span class="Comment">// potentially overloaded recipe</span>
<span id="L486" class="LineNr">486 </span>    string new_name = <a href='054static_dispatch.cc.html#L173'>resolve_ambiguous_call</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> r<span class="Delimiter">,</span> index<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">);</span>
<span id="L487" class="LineNr">487 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>new_name == <span class="Constant">&quot;&quot;</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L488" class="LineNr">488 </span>    inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name = new_name<span class="Delimiter">;</span>
<span id="L489" class="LineNr">489 </span>    inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>value = get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> new_name<span class="Delimiter">);</span>
<span id="L490" class="LineNr">490 </span>  <span class="Delimiter">}</span>
<span id="L491" class="LineNr">491 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
<span id="L492" class="LineNr">492 </span><span class="Delimiter">}</span>
<span id="L493" class="LineNr">493 </span><span class="Delimiter">:(code)</span>
<span id="L494" class="LineNr">494 </span>string <a href='054static_dispatch.cc.html#L173'>resolve_ambiguous_call</a><span class="Delimiter">(</span><span class="Normal">const</span> string&amp; recipe_name<span class="Delimiter">,</span> <span class="Normal">const</span> reagent&amp; call_types<span class="Delimiter">,</span> <span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">,</span> <span class="Normal">int</span> index<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller_recipe<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L495" class="LineNr">495 </span>  <a href='010vm.cc.html#L33'>instruction</a> inst<span class="Delimiter">;</span>
<span id="L496" class="LineNr">496 </span>  inst<span class="Delimiter">.</span>name = recipe_name<span class="Delimiter">;</span>
<span id="L497" class="LineNr">497 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_recipe<span class="Delimiter">(</span>call_types<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>  <span class="Comment">// error raised elsewhere</span>
<span id="L498" class="LineNr">498 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L208'>is_recipe_literal</a><span class="Delimiter">(</span>call_types<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>  <span class="Comment">// error raised elsewhere</span>
<span id="L499" class="LineNr">499 </span>  construct_fake_call<span class="Delimiter">(</span>call_types<span class="Delimiter">,</span> inst<span class="Delimiter">);</span>
<span id="L500" class="LineNr">500 </span>  <a href='054static_dispatch.cc.html#L173'>resolve_ambiguous_call</a><span class="Delimiter">(</span>r<span class="Delimiter">,</span> index<span class="Delimiter">,</span> inst<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">);</span>
<span id="L501" class="LineNr">501 </span>  <span class="Identifier">return</span> inst<span class="Delimiter">.</span>name<span class="Delimiter">;</span>
<span id="L502" class="LineNr">502 </span><span class="Delimiter">}</span>
<span id="L503" class="LineNr">503 </span><span class="Normal">void</span> construct_fake_call<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; recipe_var<span class="Delimiter">,</span> instruction&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L504" class="LineNr">504 </span>  assert<span class="Delimiter">(</span>recipe_var<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">);</span>
<span id="L505" class="LineNr">505 </span>  type_tree* stem = <span class="Constant">NULL</span><span class="Delimiter">;</span>
<span id="L506" class="LineNr">506 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>stem = recipe_var<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">;</span>  stem &amp;&amp; stem<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name != <span class="Constant">&quot;-&gt;&quot;</span><span class="Delimiter">;</span>  stem = stem<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span>
<span id="L507" class="LineNr">507 </span>    out<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>copy<span class="Delimiter">(</span>stem<span class="Delimiter">-&gt;</span>left<span class="Delimiter">));</span>
<span id="L508" class="LineNr">508 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>stem == <span class="Constant">NULL</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
<span id="L509" class="LineNr">509 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">skip '-&gt;'</span><span class="Comment">*/</span>stem = stem<span class="Delimiter">-&gt;</span>right<span class="Delimiter">;</span>  stem<span class="Delimiter">;</span>  stem = stem<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span>
<span id="L510" class="LineNr">510 </span>    out<span class="Delimiter">.</span>products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>copy<span class="Delimiter">(</span>stem<span class="Delimiter">-&gt;</span>left<span class="Delimiter">));</span>
<span id="L511" class="LineNr">511 </span><span class="Delimiter">}</span>
<span id="L512" class="LineNr">512 </span>
<span id="L513" class="LineNr">513 </span><span class="Delimiter">:(scenario copy_shape_shifting_recipe_to_variable)</span>
<span id="L514" class="LineNr">514 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L515" class="LineNr">515 </span>  local-scope
<span id="L516" class="LineNr">516 </span>  <span class="Delimiter">{</span>x: <span class="Delimiter">(</span>fn num<span class="muRecipe"> -&gt; </span>num<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f
<span id="L517" class="LineNr">517 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>call x<span class="Delimiter">,</span> <span class="Constant">34</span>
<span id="L518" class="LineNr">518 </span>]
<span id="L519" class="LineNr">519 </span><span class="muRecipe">def</span> f x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
<span id="L520" class="LineNr">520 </span>  local-scope
<span id="L521" class="LineNr">521 </span>  load-inputs
<span id="L522" class="LineNr">522 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L523" class="LineNr">523 </span>]
<span id="L524" class="LineNr">524 </span><span class="traceContains">+mem: storing 34 in location 1</span>
<span id="L525" class="LineNr">525 </span>
<span id="L526" class="LineNr">526 </span><span class="Comment">//: passing function literals to (higher-order) functions</span>
<span id="L527" class="LineNr">527 </span>
<span id="L528" class="LineNr">528 </span><span class="Delimiter">:(scenario pass_overloaded_recipe_literal_to_ingredient)</span>
<span id="L529" class="LineNr">529 </span><span class="Comment"># like copy_overloaded_recipe_to_variable except we bind 'x' in the course of</span>
<span id="L530" class="LineNr">530 </span><span class="Comment"># a 'call' rather than 'copy'</span>
<span id="L531" class="LineNr">531 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L532" class="LineNr">532 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>g f
<span id="L533" class="LineNr">533 </span>]
<span id="L534" class="LineNr">534 </span><span class="muRecipe">def</span> g <span class="Delimiter">{</span>x: <span class="Delimiter">(</span>fn num<span class="muRecipe"> -&gt; </span>num<span class="Delimiter">)}</span><span class="muRecipe"> -&gt; </span>result:num [
<span id="L535" class="LineNr">535 </span>  local-scope
<span id="L536" class="LineNr">536 </span>  load-ingredients
<span id="L537" class="LineNr">537 </span>  result<span class="Special"> &lt;- </span>call x<span class="Delimiter">,</span> <span class="Constant">34</span>
<span id="L538" class="LineNr">538 </span>]
<span id="L539" class="LineNr">539 </span><span class="Comment"># variant f</span>
<span id="L540" class="LineNr">540 </span><span class="muRecipe">def</span> f x:<span class="Normal">bool</span><span class="muRecipe"> -&gt; </span>y:<span class="Normal">bool</span> [
<span id="L541" class="LineNr">541 </span>  local-scope
<span id="L542" class="LineNr">542 </span>  load-ingredients
<span id="L543" class="LineNr">543 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L544" class="LineNr">544 </span>]
<span id="L545" class="LineNr">545 </span><span class="Comment"># variant f_2</span>
<span id="L546" class="LineNr">546 </span><span class="muRecipe">def</span> f x:num<span class="muRecipe"> -&gt; </span>y:num [
<span id="L547" class="LineNr">547 </span>  local-scope
<span id="L548" class="LineNr">548 </span>  load-ingredients
<span id="L549" class="LineNr">549 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L550" class="LineNr">550 </span>]
<span id="L551" class="LineNr">551 </span><span class="Comment"># x contains f_2</span>
<span id="L552" class="LineNr">552 </span><span class="traceContains">+mem: storing 34 in location 1</span>
<span id="L553" class="LineNr">553 </span>
<span id="L554" class="LineNr">554 </span><span class="Delimiter">:(after &quot;End resolve_ambiguous_call(r, index, inst, caller_recipe) Special-cases&quot;)</span>
<span id="L555" class="LineNr">555 </span><span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L556" class="LineNr">556 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_recipe<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L557" class="LineNr">557 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='054static_dispatch.cc.html#L326'>non_ghost_size</a><span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Recipe_variants<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">))</span> &lt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L558" class="LineNr">558 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt; <a href='010vm.cc.html#L198'>MAX_PRIMITIVE_RECIPES</a><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L559" class="LineNr">559 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='054static_dispatch.cc.html#L326'>non_ghost_size</a><span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Recipe_variants<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>name<span class="Delimiter">))</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L560" class="LineNr">560 </span>    <a href='003trace.cc.html#L196'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;sorry, we're not yet smart enough to simultaneously guess which overloads you want for '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' and '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
<span id="L561" class="LineNr">561 </span>    <span class="Identifier">return</span><span class="Delimiter">;</span>
<span id="L562" class="LineNr">562 </span>  <span class="Delimiter">}</span>
<span id="L563" class="LineNr">563 </span>  <span class="Normal">const</span> recipe&amp; callee = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>name<span class="Delimiter">));</span>
<span id="L564" class="LineNr">564 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!callee<span class="Delimiter">.</span>has_header<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L565" class="LineNr">565 </span>    <a href='003trace.cc.html#L196'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;sorry, we're not yet smart enough to guess which variant of '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' you want, when the caller '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' doesn't have a header</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L225'>end</a><span class="Delimiter">();</span>
<span id="L566" class="LineNr">566 </span>    <span class="Identifier">return</span><span class="Delimiter">;</span>
<span id="L567" class="LineNr">567 </span>  <span class="Delimiter">}</span>
<span id="L568" class="LineNr">568 </span>  string new_name = <a href='054static_dispatch.cc.html#L173'>resolve_ambiguous_call</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">,</span> callee<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> r<span class="Delimiter">,</span> index<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">);</span>
<span id="L569" class="LineNr">569 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>new_name != <span class="Constant">&quot;&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L570" class="LineNr">570 </span>    inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name = new_name<span class="Delimiter">;</span>
<span id="L571" class="LineNr">571 </span>    inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>value = get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> new_name<span class="Delimiter">);</span>
<span id="L572" class="LineNr">572 </span>  <span class="Delimiter">}</span>
<span id="L573" class="LineNr">573 </span><span class="Delimiter">}</span>
<span id="L574" class="LineNr">574 </span>
<span id="L575" class="LineNr">575 </span><span class="Delimiter">:(scenario return_overloaded_recipe_literal_to_caller)</span>
<span id="L576" class="LineNr">576 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L577" class="LineNr">577 </span>  local-scope
<span id="L578" class="LineNr">578 </span>  <span class="Delimiter">{</span>x: <span class="Delimiter">(</span>fn num<span class="muRecipe"> -&gt; </span>num<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>g
<span id="L579" class="LineNr">579 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>call x<span class="Delimiter">,</span> <span class="Constant">34</span>
<span id="L580" class="LineNr">580 </span>]
<span id="L581" class="LineNr">581 </span><span class="muRecipe">def</span> g<span class="muRecipe"> -&gt; </span><span class="Delimiter">{</span>x: <span class="Delimiter">(</span>fn num<span class="muRecipe"> -&gt; </span>num<span class="Delimiter">)}</span> [
<span id="L582" class="LineNr">582 </span>  local-scope
<span id="L583" class="LineNr">583 </span>  <span class="Identifier">return</span> f
<span id="L584" class="LineNr">584 </span>]
<span id="L585" class="LineNr">585 </span><span class="Comment"># variant f</span>
<span id="L586" class="LineNr">586 </span><span class="muRecipe">def</span> f x:<span class="Normal">bool</span><span class="muRecipe"> -&gt; </span>y:<span class="Normal">bool</span> [
<span id="L587" class="LineNr">587 </span>  local-scope
<span id="L588" class="LineNr">588 </span>  load-ingredients
<span id="L589" class="LineNr">589 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L590" class="LineNr">590 </span>]
<span id="L591" class="LineNr">591 </span><span class="Comment"># variant f_2</span>
<span id="L592" class="LineNr">592 </span><span class="muRecipe">def</span> f x:num<span class="muRecipe"> -&gt; </span>y:num [
<span id="L593" class="LineNr">593 </span>  local-scope
<span id="L594" class="LineNr">594 </span>  load-ingredients
<span id="L595" class="LineNr">595 </span>  y<span class="Special"> &lt;- </span>copy x
<span id="L596" class="LineNr">596 </span>]
<span id="L597" class="LineNr">597 </span><span class="Comment"># x contains f_2</span>
<span id="L598" class="LineNr">598 </span><span class="traceContains">+mem: storing 34 in location 1</span>
<span id="L599" class="LineNr">599 </span>
<span id="L600" class="LineNr">600 </span><span class="Delimiter">:(before &quot;End resolve_ambiguous_call(r, index, inst, caller_recipe) Special-cases&quot;)</span>
<span id="L601" class="LineNr">601 </span><span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;return&quot;</span> || inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;reply&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L602" class="LineNr">602 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L603" class="LineNr">603 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>!is_recipe_literal<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L604" class="LineNr">604 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span><a href='054static_dispatch.cc.html#L326'>non_ghost_size</a><span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Recipe_variants<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">))</span> &lt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L605" class="LineNr">605 </span>    <span class="Comment">// potentially overloaded recipe</span>
<span id="L606" class="LineNr">606 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>!caller_recipe<span class="Delimiter">.</span>has_header<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L607" class="LineNr">607 </span>      <a href='003trace.cc.html#L196'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;sorry, we're not yet smart enough to guess which variant of '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' you want, without a recipe header</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
<span id="L608" class="LineNr">608 </span>      <span class="Identifier">return</span><span class="Delimiter">;</span>
<span id="L609" class="LineNr">609 </span>    <span class="Delimiter">}</span>
<span id="L610" class="LineNr">610 </span>    string new_name = <a href='054static_dispatch.cc.html#L173'>resolve_ambiguous_call</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> r<span class="Delimiter">,</span> index<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">);</span>
<span id="L611" class="LineNr">611 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>new_name == <span class="Constant">&quot;&quot;</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L612" class="LineNr">612 </span>    inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name = new_name<span class="Delimiter">;</span>
<span id="L613" class="LineNr">613 </span>    inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>value = get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> new_name<span class="Delimiter">);</span>
<span id="L614" class="LineNr">614 </span>  <span class="Delimiter">}</span>
<span id="L615" class="LineNr">615 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
<span id="L616" class="LineNr">616 </span><span class="Delimiter">}</span>
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->