Mercurial > repo
annotate interps/egel/prelude-hackeso.eg @ 12312:ab575fb7f10e draft
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
author | HackEso <hackeso@esolangs.org> |
---|---|
date | Thu, 20 Feb 2020 23:23:38 +0000 |
parents | |
children |
rev | line source |
---|---|
12312
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
1 import "/hackenv/interps/egel/io.ego" |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
2 import "/hackenv/interps/egel/fs.ego" |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
3 import "/hackenv/interps/egel/random.ego" |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
4 import "/hackenv/interps/egel/regex.ego" |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
5 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
6 namespace System ( |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
7 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
8 def or = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
9 [ false false -> false |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
10 | X Y -> true ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
11 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
12 def and = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
13 [ true true -> true |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
14 | X Y -> false ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
15 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
16 def not = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
17 [ true -> false |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
18 | X -> true ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
19 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
20 def . = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
21 [ F G X -> F (G X) ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
22 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
23 def flip = [ F X Y -> F Y X ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
24 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
25 def uncurry = [ F (X,Y) -> F X Y ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
26 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
27 def fst = [ (X,Y) -> X ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
28 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
29 def snd = [ (X,Y) -> Y ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
30 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
31 def @@ = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
32 [ SELF NAME -> (get NAME SELF) SELF ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
33 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
34 ) |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
35 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
36 namespace Opt ( |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
37 data just |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
38 data nothing |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
39 ) |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
40 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
41 namespace List ( |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
42 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
43 using System |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
44 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
45 # renamed from length to avoid collision with String:length |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
46 def len = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
47 [ nil -> 0 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
48 | (cons X XX) -> 1 + (len XX) ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
49 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
50 def foldl = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
51 [ F Z nil -> Z |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
52 | F Z (cons X XX) -> foldl F (F Z X) XX ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
53 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
54 def foldr = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
55 [ F Z nil -> Z |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
56 | F Z (cons X XX) -> F X (foldr F Z XX) ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
57 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
58 def head = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
59 [ (cons X XX) -> X ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
60 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
61 def tail = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
62 [ (cons X XX) -> XX ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
63 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
64 def ++ = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
65 [ nil YY -> YY |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
66 | (cons X XX) YY -> cons X (XX ++ YY) ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
67 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
68 def map = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
69 [ F nil -> nil |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
70 | F (cons X XX) -> let Y = F X in cons Y (map F XX) ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
71 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
72 def reverse = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
73 foldl (flip cons) nil |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
74 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
75 def block = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
76 [ 0 -> nil |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
77 | N -> cons (N - 1) (block (N - 1)) ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
78 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
79 def nth = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
80 [ 0 (cons X XX) -> X |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
81 | N (cons X XX) -> nth (N - 1) XX ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
82 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
83 def insert = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
84 [ 0 X (cons Y YY) -> cons X YY |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
85 | I X (cons Y YY) -> cons Y (insert (I - 1) X YY) ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
86 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
87 def take = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
88 [ 0 XX -> nil |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
89 | N (cons X XX) -> cons X (take (N - 1) XX) ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
90 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
91 def drop = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
92 [ 0 XX -> XX |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
93 | N (cons X XX) -> drop (N - 1) XX ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
94 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
95 def fromto = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
96 [ X Y -> |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
97 if X <= Y then cons X (fromto (X+1) Y) |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
98 else nil ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
99 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
100 def filter = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
101 [ P nil -> nil |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
102 | P (cons X XX) -> if P X then cons X (filter P XX) |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
103 else filter P XX ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
104 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
105 def flatten = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
106 [ nil -> nil |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
107 | (cons nil YY) -> flatten YY |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
108 | (cons (cons X XX) YY) -> cons X (flatten (cons XX YY)) ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
109 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
110 def zip = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
111 [ (cons X XX) (cons Y YY) -> cons (X,Y) (zip XX YY) |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
112 | XX YY -> nil ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
113 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
114 def zipwith = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
115 [ Z (cons X XX) (cons Y YY) -> cons (Z X Y) (zipwith Z XX YY) |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
116 | Z XX YY -> nil ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
117 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
118 def any = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
119 [ P nil -> false |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
120 | P (cons B BB) -> if P B then true else any P BB ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
121 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
122 def all = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
123 [ P nil -> true |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
124 | P (cons B BB) -> if P B then all P BB else false ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
125 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
126 def elem = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
127 [ X -> any ((==) X) ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
128 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
129 def notelem = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
130 [ X -> all ((/=) X) ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
131 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
132 def union = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
133 [ nil YY -> YY |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
134 | (cons X XX) YY -> if elem X YY then union XX YY else cons X (union XX YY) ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
135 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
136 def insertEverywhere = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
137 [ X nil -> {{X}} |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
138 | X (cons Y YY) -> cons (cons X (cons Y YY)) (map (cons Y) (insertEverywhere X YY)) ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
139 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
140 def concatMap = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
141 [ F -> foldr ((++) . F) nil ] |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
142 |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
143 def permutations = |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
144 foldr (concatMap . insertEverywhere) {{}} |
ab575fb7f10e
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
145 ) |