/
CORE.setting
381 lines (347 loc) · 7.33 KB
/
CORE.setting
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
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
# CORE.setting
#
# Copyright 2009-2010, Larry Wall
#
# You may copy this software under the terms of the Artistic License,
# version 2.0 or later.
my module CORE;
constant Nil = ();
my enum Bool <False True>;
my enum Order < Increase Same Decrease >;
my enum TrigBase <Radians Degrees Gradians Circles>;
my role Stash { }
my role Role does Stash { }
my role Package does Stash { }
my role Module does Stash { }
my role Class does Module { }
my role Grammar does Class { }
my role List { }
my role Iterable { }
# XXX does this mean anything?
my role Matcher { }
my class P6opaque { }
my class Mu { }
my class Any { }
my class Junction { }
my class junction { }
my class Whatever { }
my class WhateverCode { }
my class HyperWhatever { }
my class Capture { }
my class Parcel { }
my class Iterator does List { }
my class Match { }
my class Signature { }
my class Parameter { }
my class Proxy { }
my class Scalar { }
my class Array does Iterable { }
my class Hash does Iterable { }
my class KeyHash does Iterable { }
my class KeySet does Iterable { }
my class KeyBag does Iterable { }
my class KeyWeight does Iterable { }
my class Pair { }
my class PairMap { }
my class Enum { }
my class EnumMap { }
my class Seq { }
my class SeqIter does List { }
my class Range { }
my class RangeIter does List { }
my class Set { }
my class Bag { }
my class Mapping { }
my class Sink { }
my class Undef { }
my class Failure { }
my class EMPTY is Failure { }
my class Exception { }
my class Code { }
my class Block { }
my class Routine { }
my class Sub { }
my class Macro { }
my class Method { }
my class Submethod { }
my class Regex { }
my class Multi { }
my role Stringy { }
my class Str { }
my class Cat { }
my class Blob { }
my class Char { }
my class AnyChar { }
my class CharLingua { }
my class Byte { }
my class Codepoint { }
my class Grapheme { }
my class StrPos { }
my class StrLen { }
my class Version { }
my role Numeric { }
my role Real { }
my class Num {
# for now, limit denominator to one quintillion to fit in Rat64.
constant pi is export = 3.14159_26535_89793_238; # 46_26433_83279_50288;
constant e is export = 2.71828_18284_59045_235; # 36_02874_71352_66249;
constant i is export = 1i;
}
import Num <pi e i>;
my class num { }
my class num16 { }
my class num32 { }
my class num64 { }
my class num128 { }
my class Complex { }
my class complex { }
# (eventually these should be instantiated generics, complex:of(num64) and such)
my class complex16 { }
my class complex32 { }
my class complex64 { }
my class complex128 { }
my role Integral { }
my class Int { }
my class int { }
my class int1 { }
my class int2 { }
my class int4 { }
my class int8 { }
my class int16 { }
my class int32 { }
my class int64 { }
my role Rational { }
my class Rat { }
my class FatRat { }
my class rat { }
my class rat8 { }
my class rat16 { }
my class rat32 { }
my class rat64 { }
my class UInt { }
my class uint { }
my class uint1 { }
my class uint2 { }
my class uint4 { }
my class uint8 { }
my class uint16 { }
my class uint32 { }
my class uint64 { }
my role Buf { }
my class buf { }
my class buf1 { }
my class buf2 { }
my class buf4 { }
my class buf8 { }
my class buf16 { }
my class buf32 { }
my class buf64 { }
my class utf8 { }
my class utf16 { }
my class utf32 { }
my class Bit { }
my class bit { }
my class bool { }
my role Ordered { }
my role Callable { }
my role Positional { }
my role Associative { }
my role Abstraction { }
my role Integral { }
my role AttributeDeclarand { }
my role ContainerDeclarand { }
my subset Comparator of Code where { .signature === :(Any, Any --> Int ) };
my subset KeyExtractor of Code where { .signature === :(Any --> Any) };
my subset OrderingPair of Pair where { .left ~~ KeyExtractor && .right ~~ Comparator };
my subset Ordering of Mu where Signature | KeyExtractor | Comparator | OrderingPair | Whatever;
my class Instant { }
my class Duration { }
my class IO { }
my class KitchenSink { }
my proto WHAT { }
my proto WHERE { }
my proto HOW { }
my proto WHICH { }
my proto VAR { }
my proto WHO { }
my proto WHENCE { }
my proto new { }
my proto fail { }
my proto temp { }
my proto let { }
my proto any { }
my proto all { }
my proto none { }
my proto one { }
my proto not { }
my proto so { }
my proto next { }
my proto last { }
my proto redo { }
my proto succeed { }
my proto goto { }
my proto die { }
my proto exit { }
my proto warn { }
my proto caller { }
my proto eval { }
my proto evalfile { }
my proto callsame { }
my proto callwith { }
my proto nextsame { }
my proto nextwith { }
my proto lastcall { }
my proto defined { }
my proto notdef { }
my proto undefine { }
my proto item { }
my proto list { }
my proto slice { }
my proto eager { }
my proto hyper { }
my proto cat { }
my proto classify { }
my proto quotemeta { }
my proto chr { }
my proto ord { }
my proto p5chop { }
my proto chop { }
my proto p5chomp { }
my proto chomp { }
my proto trim { }
my proto trim-leading { }
my proto trim-trailing { }
my proto index { }
my proto rindex { }
my proto substr { }
my proto join { }
my proto split { }
my proto comb { }
my proto pack { }
my proto unpack { }
my proto uc { }
my proto ucfirst { }
my proto lc { }
my proto lcfirst { }
my proto normalize { }
my proto nfc { }
my proto nfd { }
my proto nfkc { }
my proto nfkd { }
my proto samecase { }
my proto sameaccent { }
my proto capitalize { }
my proto chars { }
my proto graphs { }
my proto codes { }
my proto bytes { }
my proto say { }
my proto print { }
my proto open { }
my proto close { }
my proto printf { }
my proto sprintf { }
my proto unlink { }
my proto link { }
my proto symlink { }
my proto elems { }
my proto end { }
my proto grep { }
my proto map { }
my proto first { }
my proto reduce { }
my proto sort { }
my proto min { }
my proto max { }
my proto uniq { }
my proto push { }
my proto rotate { }
my proto reverse { }
my proto flip { }
my proto take { }
my proto splice { }
my proto slurp { }
my proto get { }
my proto lines { }
my proto getc { }
my proto prompt { }
my proto chdir { }
my proto chmod { }
my proto zip { }
my proto each { }
my proto roundrobin { }
my proto return { }
my proto leave { }
my proto make { }
my proto pop { }
my proto shift { }
my proto unshift { }
my proto keys { }
my proto values { }
my proto hash { }
my proto kv { }
my proto key { }
my proto value { }
my proto pairs { }
my proto invert { }
my proto pair { }
my proto enum { }
my proto sign { }
my proto abs { }
my proto floor { }
my proto ceiling { }
my proto round { }
my proto truncate { }
my proto exp { }
my proto log { }
my proto log10 { }
my proto sqrt { }
my proto roots { }
my proto rand { }
my proto srand { }
my proto pick { }
my proto cis { }
my proto unpolar { }
my proto sin { }
my proto cos { }
my proto tan { }
my proto asin { }
my proto acos { }
my proto atan { }
my proto sec { }
my proto cosec { }
my proto cotan { }
my proto asec { }
my proto acosec { }
my proto acotan { }
my proto sinh { }
my proto cosh { }
my proto tanh { }
my proto asinh { }
my proto acosh { }
my proto atanh { }
my proto sech { }
my proto cosech { }
my proto cotanh { }
my proto asech { }
my proto acosech { }
my proto acotanh { }
my proto atan2 { }
my proto gmtime { }
my proto localtime { }
my proto time { }
my proto times { }
my proto gethost { }
my proto getpw { }
my proto chroot { }
my proto getlogin { }
my proto run { }
my proto runinstead { }
my proto fork { }
my proto wait { }
my proto kill { }
my proto sleep { }
my package PROCESS {
my %ENV is export;
}
YOU_ARE_HERE;