summary refs log tree commit diff stats
path: root/go.sum
blob: 8f4146cc9fdecb9e604d2b5fea4f34481f324196 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
generated by cgit-pink 1.4.1-2-gfad0 (git 2.36.2.497.gbbea4dcf42) at 2024-11-04 23:14:13 +0000
 


lass="nt">span>
<span class="Comment">//:   end instruction inserting transforms</span>
<span class="Comment">//:</span>
<span class="Comment">//:   begin instruction modifying transforms</span>
<span class="Comment">//:     56.2 check header ingredients</span>
<span class="Comment">//:      ↳ 56.4 fill in reply ingredients</span>
<span class="Comment">//:</span>
<span class="Comment">//:     begin type modifying transforms</span>
<span class="Comment">//:       56.3 deduce types from header</span>
<span class="Comment">//:       48 check or set types by name</span>
<span class="Comment">//:     ---</span>
<span class="Comment">//:       30 check or set invalid containers</span>
<span class="Comment">//:     end type modifying transforms</span>
<span class="Comment">//:      ↳ 57 static dispatch</span>
<span class="Comment">//:   ---</span>
<span class="Comment">//:     13 update instruction operation</span>
<span class="Comment">//:     40 transform braces</span>
<span class="Comment">//:     41 transform labels</span>
<span class="Comment">//:</span>
<span class="Comment">//:      ↱ 46 collect surrounding spaces</span>
<span class="Comment">//:     42 transform names</span>
<span class="Comment">//:   end instruction modifying transforms</span>
<span class="Comment">//:</span>
<span class="Comment">//:   begin checks</span>
<span class="Comment">//:   ---</span>
<span class="Comment">//:     21 check instruction</span>
<span class="Comment">//:     ↳ 43 transform 'new' to 'allocate'</span>
<span class="Comment">//:</span>
<span class="Comment">//:     56 check reply instructions against header</span>
<span class="Comment">//:   end checks</span>
<span class="Comment">//: end transforms</span>

<span class="SalientComment">//:: Summary of type-checking in different phases</span>
<span class="Comment">//: when dispatching instructions we accept first recipe that:</span>
<span class="Comment">//:   strictly matches all types</span>
<span class="Comment">//:   maps literal 0 or literal 1 to boolean for some ingredients</span>
<span class="Comment">//:   performs some other acceptable type conversion</span>
<span class="Comment">//:     literal 0 -&gt; address</span>
<span class="Comment">//:     literal -&gt; character</span>
<span class="Comment">//: when checking instructions we ensure that types match, and that literals map to some scalar</span>
<span class="Comment">//:   (address can only map to literal 0)</span>
<span class="Comment">//:   (boolean can only map to literal 0 or literal 1)</span>
<span class="Comment">//:     (but conditionals can take any scalar)</span>
<span class="Comment">//: at runtime we perform no checks</span>
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->