• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

A categorical programming language


コミットメタ情報

リビジョン9e2117fa3082abbb63bef99824bc7007c7307b9a (tree)
日時2023-01-25 12:16:19
作者Corbin <cds@corb...>
コミッターCorbin

ログメッセージ

Use a faster sorting routine.

SRFI-132 replaces SRFI-1's quadratic-time approach with a good old
O(n lg n) approach.

変更サマリ

差分

--- a/movelist/cammy-repl.scm
+++ b/movelist/cammy-repl.scm
@@ -1,4 +1,4 @@
1-(import (srfi-1))
1+(import (srfi-132))
22 (import (chicken pretty-print))
33 (import (chicken time))
44 (import (matchable))
@@ -39,7 +39,7 @@
3939 (match ty
4040 ['1 "*"]
4141 ['2 (if elt "true" "false")]
42- ['N (if (nat? elt) (little-endian->number elt) "…")]
42+ ['N (if (nat? elt) (number->string (little-endian->number elt)) "…")]
4343 [`(pair ,f ,g)
4444 (string-append "(" (elt->str f (car elt)) ", " (elt->str g (cdr elt)) ")")]
4545 [t elt]))
@@ -69,7 +69,9 @@
6969
7070 ; need the type to display the value properly
7171 (define (packs->strs ps)
72- (delete-duplicates (map (lambda (q) (elt->str (car q) (cdr q))) ps)))
72+ (list-delete-neighbor-dups
73+ string=?
74+ (list-sort string<? (map (lambda (q) (elt->str (car q) (cdr q))) ps))))
7375
7476 (define (cammy-image expr)
7577 (time
--- a/movelist/cammyo.scm
+++ b/movelist/cammyo.scm
@@ -187,6 +187,7 @@
187187 ((== expr 'fst) (caro i o))
188188 ((== expr 'snd) (cdro i o))
189189 ((== expr 'dup) (conso i i o))
190+ ((== expr 'swap) (fresh (p1 p2) (conso p1 p2 i) (conso p2 p1 o)))
190191 ((fresh (f g o1 o2) (== expr `(pair ,f ,g)) (conso o1 o2 o)
191192 (eval° f i o1) (eval° g i o2)))
192193 ((== expr 't) (== i 'star) (== o #t))
@@ -196,5 +197,6 @@
196197 ((== expr 'zero) (== i 'star) (zeroo o))
197198 ((== expr 'succ) (succ° i o))
198199 ((fresh (f g) (== expr `(pr ,f ,g)) (pr° f g i o)))
200+ ((== expr 'n-add) (fresh (i1 i2) (conso i1 i2 i) (+o i1 i2 o)))
199201 ))
200202 )
--- a/movelist/default.nix
+++ b/movelist/default.nix
@@ -12,7 +12,7 @@ in pkgs.stdenv.mkDerivation {
1212 buildInputs = [
1313 pkgs.chicken
1414 ] ++ (with eggs; [
15- matchable mini-kanren
15+ srfi-132 matchable mini-kanren
1616 ]);
1717
1818 src = ./.;
--- a/movelist/eggs.nix
+++ b/movelist/eggs.nix
@@ -43,5 +43,33 @@ rec {
4343
4444 ];
4545 };
46+
47+ srfi-132 = eggDerivation {
48+ name = "srfi-132-1.0.0";
49+
50+ src = fetchegg {
51+ name = "srfi-132";
52+ version = "1.0.0";
53+ sha256 = "1id6kdf7ydf97bvc5xjnp4bz8q324mqfc656d96rdpcqn2sqkdfh";
54+ };
55+
56+ buildInputs = [
57+ srfi-133
58+ ];
59+ };
60+
61+ srfi-133 = eggDerivation {
62+ name = "srfi-133-1.6.1";
63+
64+ src = fetchegg {
65+ name = "srfi-133";
66+ version = "1.6.1";
67+ sha256 = "0c13cnb8v4p1mmi8rj9kgay9vq6n7vq9xxz4qprh265x1f3q4ikm";
68+ };
69+
70+ buildInputs = [
71+
72+ ];
73+ };
4674 }
4775
--- a/movelist/eggs.scm
+++ b/movelist/eggs.scm
@@ -1,2 +1,3 @@
11 matchable
22 mini-kanren
3+srfi-132