A categorical programming language
修订版 | 2c4a70a552da3ea9ed7c9a2a8941aaa8b8aa0985 (tree) |
---|---|
时间 | 2022-03-06 13:17:10 |
作者 | Corbin <cds@corb...> |
Commiter | Corbin |
Clean up old parts of movelist.
@@ -7,14 +7,6 @@ let | ||
7 | 7 | cammy-frame = import ./cammy-rpy/frame.nix { inherit nixpkgs jelly; }; |
8 | 8 | cammy-repl = import ./cammy-rpy/repl.nix { inherit nixpkgs jelly; }; |
9 | 9 | cammy-weave = import ./cammy-rpy/weave.nix { inherit nixpkgs jelly; }; |
10 | - eggs = builtins.attrValues (removeAttrs (import ./eggs.nix { | |
11 | - inherit pkgs; | |
12 | - stdenv = pkgs.stdenv; | |
13 | - }) [ "eggDerivation" "fetchegg" ]) ++ [ pkgs.chicken ]; | |
14 | - CHICKEN_REPOSITORY_PATH = builtins.concatStringsSep ":" | |
15 | - (map (egg: "${egg.out}/lib/chicken/${toString pkgs.chicken.binaryVersion}") eggs); | |
16 | - CHICKEN_INCLUDE_PATH = builtins.concatStringsSep ":" | |
17 | - (map (egg: "${egg.out}/share") eggs); | |
18 | 10 | in pkgs.stdenv.mkDerivation { |
19 | 11 | name = "cammy"; |
20 | 12 | version = "0.2"; |
@@ -23,14 +15,11 @@ in pkgs.stdenv.mkDerivation { | ||
23 | 15 | |
24 | 16 | buildInputs = [ pkgs.makeWrapper ]; |
25 | 17 | |
26 | - inherit (pkgs) bash chicken python3; | |
27 | - inherit CHICKEN_REPOSITORY_PATH CHICKEN_INCLUDE_PATH jelly movelist; | |
28 | - | |
29 | 18 | installPhase = '' |
30 | 19 | mkdir -p $out/bin/ |
31 | 20 | |
32 | - # To be removed | |
33 | - makeWrapper ${movelist}/bin/movelist $out/bin/cammy-movelist | |
21 | + # djinn | |
22 | + makeWrapper ${movelist}/bin/movelist $out/bin/cammy-djinn | |
34 | 23 | |
35 | 24 | # jelly |
36 | 25 | makeWrapper ${jelly}/bin/jelly $out/bin/cammy-jelly |
@@ -1,163 +0,0 @@ | ||
1 | -{ pkgs, stdenv }: | |
2 | -rec { | |
3 | - inherit (pkgs) eggDerivation fetchegg; | |
4 | - | |
5 | - matchable = eggDerivation { | |
6 | - name = "matchable-1.1"; | |
7 | - | |
8 | - src = fetchegg { | |
9 | - name = "matchable"; | |
10 | - version = "1.1"; | |
11 | - sha256 = "084hm5dvbvgnpb32ispkp3hjili8z02hamln860r99jx68jx6j2v"; | |
12 | - }; | |
13 | - | |
14 | - buildInputs = [ | |
15 | - | |
16 | - ]; | |
17 | - }; | |
18 | - | |
19 | - r7rs = eggDerivation { | |
20 | - name = "r7rs-1.0.5"; | |
21 | - | |
22 | - src = fetchegg { | |
23 | - name = "r7rs"; | |
24 | - version = "1.0.5"; | |
25 | - sha256 = "0zyi1z4m1995hm2wfc5wpi8jjgxcwk03qknq5v2ygff3akxazsf6"; | |
26 | - }; | |
27 | - | |
28 | - buildInputs = [ | |
29 | - matchable | |
30 | - srfi-1 | |
31 | - srfi-13 | |
32 | - ]; | |
33 | - }; | |
34 | - | |
35 | - srfi-1 = eggDerivation { | |
36 | - name = "srfi-1-0.5.1"; | |
37 | - | |
38 | - src = fetchegg { | |
39 | - name = "srfi-1"; | |
40 | - version = "0.5.1"; | |
41 | - sha256 = "15x0ajdkw5gb3vgs8flzh5g0pzl3wmcpf11iimlm67mw6fxc8p7j"; | |
42 | - }; | |
43 | - | |
44 | - buildInputs = [ | |
45 | - | |
46 | - ]; | |
47 | - }; | |
48 | - | |
49 | - srfi-128 = eggDerivation { | |
50 | - name = "srfi-128-0.11"; | |
51 | - | |
52 | - src = fetchegg { | |
53 | - name = "srfi-128"; | |
54 | - version = "0.11"; | |
55 | - sha256 = "1lq513l0lniyih9xar1jfpan4iazp39lj6bsp8cn7yllbki5xhkf"; | |
56 | - }; | |
57 | - | |
58 | - buildInputs = [ | |
59 | - srfi-13 | |
60 | - ]; | |
61 | - }; | |
62 | - | |
63 | - srfi-13 = eggDerivation { | |
64 | - name = "srfi-13-0.3.2"; | |
65 | - | |
66 | - src = fetchegg { | |
67 | - name = "srfi-13"; | |
68 | - version = "0.3.2"; | |
69 | - sha256 = "137yv5hkhnapgh7iq3siiq1vfqdmvck4gsax7p6pmch6adg2wcy4"; | |
70 | - }; | |
71 | - | |
72 | - buildInputs = [ | |
73 | - srfi-14 | |
74 | - ]; | |
75 | - }; | |
76 | - | |
77 | - srfi-14 = eggDerivation { | |
78 | - name = "srfi-14-0.2.1"; | |
79 | - | |
80 | - src = fetchegg { | |
81 | - name = "srfi-14"; | |
82 | - version = "0.2.1"; | |
83 | - sha256 = "0gc33cx4xll9vsf7fm8jvn3gc0604kn3bbi6jfn6xscqp86kqb9p"; | |
84 | - }; | |
85 | - | |
86 | - buildInputs = [ | |
87 | - | |
88 | - ]; | |
89 | - }; | |
90 | - | |
91 | - srfi-144 = eggDerivation { | |
92 | - name = "srfi-144-0.1.3"; | |
93 | - | |
94 | - src = fetchegg { | |
95 | - name = "srfi-144"; | |
96 | - version = "0.1.3"; | |
97 | - sha256 = "0i2446bwqirc47a08fdmhxjc231i4kzdqlxsv1avy13klain7mad"; | |
98 | - }; | |
99 | - | |
100 | - buildInputs = [ | |
101 | - r7rs | |
102 | - ]; | |
103 | - }; | |
104 | - | |
105 | - srfi-145 = eggDerivation { | |
106 | - name = "srfi-145-0.1"; | |
107 | - | |
108 | - src = fetchegg { | |
109 | - name = "srfi-145"; | |
110 | - version = "0.1"; | |
111 | - sha256 = "1r4278xhpmm8gww64j6akpyv3qjnn14b6nsisyb9qm7yx3pkpim9"; | |
112 | - }; | |
113 | - | |
114 | - buildInputs = [ | |
115 | - | |
116 | - ]; | |
117 | - }; | |
118 | - | |
119 | - srfi-160 = eggDerivation { | |
120 | - name = "srfi-160-0.5.3"; | |
121 | - | |
122 | - src = fetchegg { | |
123 | - name = "srfi-160"; | |
124 | - version = "0.5.3"; | |
125 | - sha256 = "033j5c25s7xr6in4z4w8kqj2xy69bd254ilf7c0nal020pb2yp2r"; | |
126 | - }; | |
127 | - | |
128 | - buildInputs = [ | |
129 | - srfi-128 | |
130 | - ]; | |
131 | - }; | |
132 | - | |
133 | - srfi-189 = eggDerivation { | |
134 | - name = "srfi-189-0.1"; | |
135 | - | |
136 | - src = fetchegg { | |
137 | - name = "srfi-189"; | |
138 | - version = "0.1"; | |
139 | - sha256 = "1nmrywpi9adi5mm1vcbxxsgw0j3v6m7s4j1mii7icj83xn81cgvx"; | |
140 | - }; | |
141 | - | |
142 | - buildInputs = [ | |
143 | - r7rs | |
144 | - srfi-1 | |
145 | - srfi-145 | |
146 | - ]; | |
147 | - }; | |
148 | - | |
149 | - stb-image-write = eggDerivation { | |
150 | - name = "stb-image-write-0.3"; | |
151 | - | |
152 | - src = fetchegg { | |
153 | - name = "stb-image-write"; | |
154 | - version = "0.3"; | |
155 | - sha256 = "08qjvsih3jdniclcbsh06yd67vz3kya6ny42fwhlbkyxlj8c92s3"; | |
156 | - }; | |
157 | - | |
158 | - buildInputs = [ | |
159 | - | |
160 | - ]; | |
161 | - }; | |
162 | -} | |
163 | - |
@@ -1,5 +0,0 @@ | ||
1 | -srfi-144 | |
2 | -srfi-160 | |
3 | -srfi-189 | |
4 | -matchable | |
5 | -stb-image-write |
@@ -0,0 +1,3 @@ | ||
1 | +(fold t conj) | |
2 | + | |
3 | +Whether every element in a list is true. |
@@ -0,0 +1,3 @@ | ||
1 | +(fold f disj) | |
2 | + | |
3 | +Whether any element in a list is true. |
@@ -0,0 +1,3 @@ | ||
1 | +(uncurry (case (curry left) (curry right))) | |
2 | + | |
3 | +Distribute to the left. |
@@ -0,0 +1,3 @@ | ||
1 | +(fold nil (comp fun/distribl (case cons snd))) | |
2 | + | |
3 | +Select the left-hand elements of a list of sums. |
@@ -0,0 +1,3 @@ | ||
1 | +(comp @0 (case @1 right)) | |
2 | + | |
3 | +Bind for the maybe monad. |
@@ -62,13 +62,13 @@ | ||
62 | 62 | (define (type-check expr) |
63 | 63 | (car (run 1 (q) (fresh (s t) (== q (list s t)) (cammyo expr s t))))) |
64 | 64 | |
65 | +(define (last xs) | |
66 | + (if (null? (cdr xs)) (car xs) (last (cdr xs)))) | |
67 | + | |
65 | 68 | (define (djinn x s t) |
66 | - (run x (q) (cammyo q s t))) | |
69 | + (last (run x (q) (cammyo q s t)))) | |
67 | 70 | |
68 | 71 | (match (map (lambda (s) (read (open-input-string s))) |
69 | 72 | (command-line-arguments)) |
70 | - [('type-check) (begin | |
71 | - (display (type-check (read))) (newline))] | |
72 | - [('djinn (? number? count) in out) (begin | |
73 | - (display (djinn count in out)) | |
74 | - (newline))]) | |
73 | + [(in out (? number? count)) (begin (display (djinn count in out)) | |
74 | + (newline))]) |
@@ -55,4 +55,3 @@ | ||
55 | 55 | * Moore transducers: [Q × S, Q] -> [Q × S, Q] |
56 | 56 | * Mealy machines: For state type Q, input type S, and output type L, Q × S -> Q × L |
57 | 57 | * Jets |
58 | -* f/dot2pair |