This repository has been archived by the owner on Jun 7, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathf-test.meta
192 lines (169 loc) · 13.6 KB
/
f-test.meta
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
;; "Hello, world!"
["1000", "0", "f-test/test-literal-1"] ; f-test/test-literal-1(1000).identifier(0) = "f-test/test-literal-1"
["1000", "5", "100"] ; f-test/test-literal-1(1000).type(5) = f/StringLiteral(100)
["1000", "101", "Hello, world!"] ; f-test/test-literal-1(1000).f/StringLiteral.value(101) = "Hello, world!"
;; "foobar"
["1001", "0", "f-test/Kate's program"] ; f-test/Kate's program(1001).identifier(0) = "f-test/Kate's program"
["1001", "5", "100"] ; f-test/Kate's program(1001).type(5) = f/StringLiteral(100)
["1001", "101", "foobar"] ; f-test/Kate's program(1001).f/StringLiteral.value(101) = "foobar"
;; { "hello": "world", "Kate": "foobar", "nesting": { "hi": "there" } }
["1002", "0", "f-test/record-test"] ; f-test/record-test(1002).identifier(0) = "f-test/record-test"
["1002", "5", "102"] ; f-test/record-test(1002).type(5) = f/RecordLiteral(102)
["1002", "103", "1003"] ; f-test/record-test(1002).f/RecordLiteral.field(103) = (1003)
["1003", "5", "104"] ; (1003).type(5) = f/RecordField(104)
["1003", "105", "1004"] ; (1003).f/RecordField.key(105) = (1004)
["1003", "106", "1005"] ; (1003).f/RecordField.value(106) = (1005)
["1004", "5", "100"] ; (1004).type(5) = f/StringLiteral(100)
["1004", "101", "hello"] ; (1004).f/StringLiteral.value(101) = "hello"
["1005", "5", "100"] ; (1005).type(5) = f/StringLiteral(100)
["1005", "101", "world"] ; (1005).f/StringLiteral.value(101) = "world"
["1002", "103", "1006"] ; f-test/record-test(1002).f/RecordLiteral.field(103) = (1006)
["1006", "5", "104"] ; (1006).type(5) = f/RecordField(104)
["1006", "105", "1007"] ; (1006).f/RecordField.key(105) = (1007)
["1006", "106", "1001"] ; (1006).f/RecordField.value(106) = f-test/Kate's program(1001)
["1007", "5", "100"] ; (1007).type(5) = f/StringLiteral(100)
["1007", "101", "Kate"] ; (1007).f/StringLiteral.value(101) = "Kate"
["1002", "103", "1008"] ; f-test/record-test(1002).f/RecordLiteral.field(103) = (1008)
["1008", "5", "104"] ; (1008).type(5) = f/RecordField(104)
["1008", "105", "1009"] ; (1008).f/RecordField.key(105) = (1009)
["1009", "5", "100"] ; (1009).type(5) = f/StringLiteral(100)
["1009", "101", "nesting"] ; (1009).f/StringLiteral.value(101) = "nesting"
["1008", "106", "1010"] ; (1008).f/RecordField.value(106) = (1010)
;; { "hi": "there" }
["1010", "5", "102"] ; (1010).type(5) = f/RecordLiteral(102)
["1010", "103", "1011"] ; (1010).f/RecordLiteral.field(103) = (1011)
["1011", "5", "104"] ; (1011).type(5) = f/RecordField(104)
["1011", "105", "1012"] ; (1011).f/RecordField.key(105) = (1012)
["1011", "106", "1013"] ; (1011).f/RecordField.value(106) = (1013)
["1012", "5", "100"] ; (1012).type(5) = f/StringLiteral(100)
["1012", "101", "hi"] ; (1012).f/StringLiteral.value(101) = "hi"
["1013", "5", "100"] ; (1013).type(5) = f/StringLiteral(100)
["1013", "101", "there"] ; (1013).f/StringLiteral.value(101) = "there"
;; { "hello": "world", "Kate": "foobar", "nesting": { "hi": "there" } }.nesting.hi
["1014", "0", "f-test/field-access"] ; f-test/field-access(1014).identifier(0) = "f-test/field-access"
["1014", "5", "107"] ; f-test/field-access(1014).type(5) = f/FieldAccess(107)
["1014", "108", "1015"] ; f-test/field-access(1014).f/FieldAccess.record(108) = (1015)
["1014", "109", "1017"] ; f-test/field-access(1014).f/FieldAccess.field(109) = (1017)
["1015", "5", "107"] ; (1015).type(5) = f/FieldAccess(107)
["1015", "108", "1002"] ; (1015).f/FieldAccess.record(108) = f-test/record-test(1002)
["1015", "109", "1016"] ; (1015).f/FieldAccess.field(109) = (1016)
["1016", "5", "100"] ; (1016).type(5) = f/StringLiteral(100)
["1016", "101", "nesting"] ; (1016).f/StringLiteral.value(101) = "nesting"
["1017", "5", "100"] ; (1017).type(5) = f/StringLiteral(100)
["1017", "101", "hi"] ; (1017).f/StringLiteral.value(101) = "hi"
;; (\x -> x.hello) { "hello": "world", "Kate": "foobar", "nesting": { "hi": "there" } }
["1018", "0", "f-test/function"] ; f-test/function(1018).identifier(0) = "f-test/function"
["1018", "5", "115"] ; f-test/function(1018).type(5) = f/Apply(115)
["1018", "116", "1019"] ; f-test/function(1018).f/Apply.function(116) = (1019)
["1018", "117", "1002"] ; f-test/function(1018).f/Apply.argument(117) = f-test/record-test(1002)
["1019", "5", "110"] ; (1019).type(5) = f/Function(110)
["1019", "111", "1020"] ; (1019).f/Function.parameter(111) = (1020)
["1019", "112", "1021"] ; (1019).f/Function.body(112) = (1021)
["1020", "5", "113"] ; (1020).type(5) = f/Identifier(113)
["1020", "114", "x"] ; (1020).f/Identifier.name(114) = "x"
["1021", "5", "107"] ; (1021).type(5) = f/FieldAccess(107)
["1021", "108", "1022"] ; (1021).f/FieldAccess.record(108) = (1022)
["1021", "109", "1023"] ; (1021).f/FieldAccess.field(109) = (1023)
["1022", "5", "118"] ; (1022).type(5) = f/Reference(118)
["1022", "119", "1020"] ; (1022).f/Reference.reference(119) = (1020)
["1023", "5", "100"] ; (1023).type(5) = f/StringLiteral(100)
["1023", "101", "hello"] ; (1023).f/StringLiteral.value(101) = "hello"
;; (\y -> "hi") "Hello, world!"
["1024", "0", "f-test/primitive-function"] ; f-test/primitive-function(1024).identifier(0) = "f-test/primitive-function"
["1024", "5", "115"] ; f-test/primitive-function(1024).type(5) = f/Apply(115)
["1024", "116", "1025"] ; f-test/primitive-function(1024).f/Apply.function(116) = (1025)
["1024", "117", "1000"] ; f-test/primitive-function(1024).f/Apply.argument(117) = f-test/test-literal-1(1000)
["1025", "5", "110"] ; (1025).type(5) = f/Function(110)
["1025", "111", "1026"] ; (1025).f/Function.parameter(111) = (1026)
["1025", "112", "1027"] ; (1025).f/Function.body(112) = (1027)
["1026", "5", "113"] ; (1026).type(5) = f/FunctionParameter(113)
["1026", "114", "y"] ; (1026).f/FunctionParameter.name(114) = "y"
["1027", "5", "100"] ; (1027).type(5) = f/StringLiteral(100)
["1027", "101", "hi"] ; (1027).f/StringLiteral.value(101) = "hi"
;; let { } in "Hello"
["1028", "0", "f-test/letrec-primitive"] ; f-test/letrec-primitive(1028).identifier(0) = "f-test/letrec-primitive"
["1028", "5", "120"] ; f-test/letrec-primitive(1028).type(5) = f/Letrec(120)
["1028", "122", "1029"] ; f-test/letrec-primitive(1028).f/Letrec.value(122) = (1029)
["1029", "5", "100"] ; (1029).type(5) = f/StringLiteral(100)
["1029", "101", "Hello"] ; (1029).f/StringLiteral.value(101) = "Hello"
;; let { x = "hi"; } in "hello"
["1030", "0", "f-test/letrec-with-binding"] ; f-test/letrec-with-binding(1030).identifier(0) = "f-test/letrec-with-binding"
["1030", "5", "120"] ; f-test/letrec-with-binding(1030).type(5) = f/Letrec(120)
["1030", "121", "1031"] ; f-test/letrec-with-binding(1030).f/Letrec.binding(121) = (1031)
["1030", "122", "1034"] ; f-test/letrec-with-binding(1030).f/Letrec.value(122) = (1034)
["1031", "5", "123"] ; (1031).type(5) = f/Binding(123)
["1031", "124", "1032"] ; (1031).f/Binding.identifier(124) = (1032)
["1031", "125", "1033"] ; (1031).f/Binding.value(125) = (1033)
["1032", "5", "113"] ; (1032).type(5) = f/Identifier(113)
["1032", "114", "x"] ; (1032).f/Identifier.name(114) = "x"
["1033", "5", "100"] ; (1033).type(5) = f/StringLiteral(100)
["1033", "101", "hi"] ; (1033).f/StringLiteral.value(101) = "hi"
["1034", "5", "100"] ; (1034).type(5) = f/StringLiteral(100)
["1034", "101", "hello"] ; (1034).f/StringLiteral.value(101) = "hello"
;; let { x = "hi"; y = "blah"; } in "hello"
["1035", "0", "f-test/letrec-multi-binding"] ; f-test/letrec-multi-binding(1035).identifier(0) = "f-test/letrec-multi-binding"
["1035", "5", "120"] ; f-test/letrec-multi-binding(1035).type(5) = f/Letrec(120)
["1035", "121", "1036"] ; f-test/letrec-multi-binding(1035).f/Letrec.binding(121) = (1036)
["1035", "122", "1039"] ; f-test/letrec-multi-binding(1035).f/Letrec.value(122) = (1039)
["1036", "5", "123"] ; (1036).type(5) = f/Binding(123)
["1036", "124", "1037"] ; (1036).f/Binding.identifier(124) = (1037)
["1036", "125", "1038"] ; (1036).f/Binding.value(125) = (1038)
["1037", "5", "113"] ; (1037).type(5) = f/Identifier(113)
["1037", "114", "x"] ; (1037).f/Identifier.name(114) = "x"
["1038", "5", "100"] ; (1038).type(5) = f/StringLiteral(100)
["1038", "101", "hi"] ; (1038).f/StringLiteral.value(101) = "hi"
["1039", "5", "100"] ; (1039).type(5) = f/StringLiteral(100)
["1039", "101", "hello"] ; (1039).f/StringLiteral.value(101) = "hello"
["1035", "121", "1040"] ; f-test/letrec-multi-binding(1035).f/Letrec.binding(121) = (1040)
["1040", "5", "123"] ; (1040).type(5) = f/Binding(123)
["1040", "124", "1041"] ; (1040).f/Binding.identifier(124) = (1041)
["1040", "125", "1042"] ; (1040).f/Binding.value(125) = (1042)
["1041", "5", "113"] ; (1041).type(5) = f/Identifier(113)
["1041", "114", "y"] ; (1041).f/Identifier.name(114) = "y"
["1042", "5", "100"] ; (1042).type(5) = f/StringLiteral(100)
["1042", "101", "blah"] ; (1042).f/StringLiteral.value(101) = "blah"
;; let { x = "hi"; y = x; } in y
["1043", "0", "f-test/letrec-reference"] ; f-test/letrec-reference(1043).identifier(0) = "f-test/letrec-reference"
["1043", "5", "120"] ; f-test/letrec-reference(1043).type(5) = f/Letrec(120)
["1043", "121", "1044"] ; f-test/letrec-reference(1043).f/Letrec.binding(121) = (1044)
["1043", "122", "1047"] ; f-test/letrec-reference(1043).f/Letrec.value(122) = (1047)
["1044", "5", "123"] ; (1044).type(5) = f/Binding(123)
["1044", "124", "1045"] ; (1044).f/Binding.identifier(124) = (1045)
["1044", "125", "1046"] ; (1044).f/Binding.value(125) = (1046)
["1045", "5", "113"] ; (1045).type(5) = f/Identifier(113)
["1045", "114", "x"] ; (1045).f/Identifier.name(114) = "x"
["1046", "5", "100"] ; (1046).type(5) = f/StringLiteral(100)
["1046", "101", "hi"] ; (1046).f/StringLiteral.value(101) = "hi"
["1047", "5", "118"] ; (1047).type(5) = f/Reference(118)
["1047", "119", "1049"] ; (1047).f/Reference.reference(119) = (1049)
["1043", "121", "1048"] ; f-test/letrec-reference(1043).f/Letrec.binding(121) = (1048)
["1048", "5", "123"] ; (1048).type(5) = f/Binding(123)
["1048", "124", "1049"] ; (1048).f/Binding.identifier(124) = (1049)
["1048", "125", "1050"] ; (1048).f/Binding.value(125) = (1050)
["1049", "5", "113"] ; (1049).type(5) = f/Identifier(113)
["1049", "114", "y"] ; (1049).f/Identifier.name(114) = "y"
["1050", "5", "118"] ; (1050).type(5) = f/Reference(118)
["1050", "119", "1045"] ; (1050).f/Reference.reference(119) = (1045)
;; let { f = ...; x = ...; } in f x
["1051", "0", "f-test/letrec-full"]
["1051", "5", "120"]
["1051", "121", "1052"]
["1052", "5", "123"]
["1052", "124", "1053"]
["1052", "125", "1019"]
["1053", "5", "113"]
["1053", "114", "f"]
["1051", "121", "1054"]
["1054", "5", "123"]
["1054", "124", "1055"]
["1054", "125", "1002"]
["1055", "5", "113"]
["1055", "114", "x"]
["1051", "122", "1056"]
["1056", "5", "115"]
["1056", "116", "1057"]
["1056", "117", "1058"]
["1057", "5", "118"]
["1057", "119", "1053"]
["1058", "5", "118"]
["1058", "119", "1055"]