aboutsummaryrefslogtreecommitdiff
path: root/scheme/mk.scm
diff options
context:
space:
mode:
authorJedidiah Barber <contact@jedbarber.id.au>2026-02-14 22:46:03 +1300
committerJedidiah Barber <contact@jedbarber.id.au>2026-02-14 22:46:03 +1300
commitbcb7a1156252da6cd16b7d3505e3f5b686a5669f (patch)
tree6ec75590b6fc71a08fc873430e1a82020e6bc801 /scheme/mk.scm
parentb23d73cfa76919a726558e51bf0b0f0cc7c1575e (diff)
Changed Scheme benchmark tests to need manual code copy/paste from miniKanren for better performance comparisonsHEADmaster
Diffstat (limited to 'scheme/mk.scm')
-rw-r--r--scheme/mk.scm269
1 files changed, 0 insertions, 269 deletions
diff --git a/scheme/mk.scm b/scheme/mk.scm
deleted file mode 100644
index 9917284..0000000
--- a/scheme/mk.scm
+++ /dev/null
@@ -1,269 +0,0 @@
-
-; miniKanren core from simple-miniKanren
-
-; https://minikanren.org
-; https://github.com/miniKanren/simple-miniKanren
-
-
-;;; This file was generated by writeminikanren.pl
-;;; Generated at 2007-10-25 15:24:42
-
-(define-syntax lambdag@
- (syntax-rules ()
- ((_ (p) e) (lambda (p) e))))
-
-(define-syntax lambdaf@
- (syntax-rules ()
- ((_ () e) (lambda () e))))
-
-(define-syntax run*
- (syntax-rules ()
- ((_ (x) g ...) (run #f (x) g ...))))
-
-(define-syntax rhs
- (syntax-rules ()
- ((_ x) (cdr x))))
-
-(define-syntax lhs
- (syntax-rules ()
- ((_ x) (car x))))
-
-(define-syntax size-s
- (syntax-rules ()
- ((_ x) (length x))))
-
-(define-syntax var
- (syntax-rules ()
- ((_ x) (vector x))))
-
-(define-syntax var?
- (syntax-rules ()
- ((_ x) (vector? x))))
-
-(define empty-s '())
-
-(define walk
- (lambda (u S)
- (cond
- ((and (var? u) (assq u S)) =>
- (lambda (pr) (walk (rhs pr) S)))
- (else u))))
-
-(define ext-s
- (lambda (x v s)
- (cons `(,x . ,v) s)))
-
-(define unify
- (lambda (u v s)
- (let ((u (walk u s))
- (v (walk v s)))
- (cond
- ((eq? u v) s)
- ((var? u) (ext-s-check u v s))
- ((var? v) (ext-s-check v u s))
- ((and (pair? u) (pair? v))
- (let ((s (unify
- (car u) (car v) s)))
- (and s (unify
- (cdr u) (cdr v) s))))
- ((equal? u v) s)
- (else #f)))))
-
-(define ext-s-check
- (lambda (x v s)
- (cond
- ((occurs-check x v s) #f)
- (else (ext-s x v s)))))
-
-(define occurs-check
- (lambda (x v s)
- (let ((v (walk v s)))
- (cond
- ((var? v) (eq? v x))
- ((pair? v)
- (or
- (occurs-check x (car v) s)
- (occurs-check x (cdr v) s)))
- (else #f)))))
-
-(define walk*
- (lambda (w s)
- (let ((v (walk w s)))
- (cond
- ((var? v) v)
- ((pair? v)
- (cons
- (walk* (car v) s)
- (walk* (cdr v) s)))
- (else v)))))
-
-(define reify-s
- (lambda (v s)
- (let ((v (walk v s)))
- (cond
- ((var? v)
- (ext-s v (reify-name (size-s s)) s))
- ((pair? v) (reify-s (cdr v)
- (reify-s (car v) s)))
- (else s)))))
-
-(define reify-name
- (lambda (n)
- (string->symbol
- (string-append "_" "." (number->string n)))))
-
-(define reify
- (lambda (v s)
- (let ((v (walk* v s)))
- (walk* v (reify-s v empty-s)))))
-
-(define-syntax mzero
- (syntax-rules () ((_) #f)))
-
-(define-syntax inc
- (syntax-rules () ((_ e) (lambdaf@ () e))))
-
-(define-syntax unit
- (syntax-rules () ((_ a) a)))
-
-(define-syntax choice
- (syntax-rules () ((_ a f) (cons a f))))
-
-(define-syntax case-inf
- (syntax-rules ()
- ((_ e (() e0) ((f^) e1) ((a^) e2) ((a f) e3))
- (let ((a-inf e))
- (cond
- ((not a-inf) e0)
- ((procedure? a-inf) (let ((f^ a-inf)) e1))
- ((not (and (pair? a-inf)
- (procedure? (cdr a-inf))))
- (let ((a^ a-inf)) e2))
- (else (let ((a (car a-inf)) (f (cdr a-inf)))
- e3)))))))
-
-(define-syntax run
- (syntax-rules ()
- ((_ n (x) g0 g ...)
- (take n
- (lambdaf@ ()
- ((fresh (x) g0 g ...
- (lambdag@ (s)
- (cons (reify x s) '())))
- empty-s))))))
-
-(define take
- (lambda (n f)
- (if (and n (zero? n))
- '()
- (case-inf (f)
- (() '())
- ((f) (take n f))
- ((a) a)
- ((a f)
- (cons (car a)
- (take (and n (- n 1)) f)))))))
-
-(define ==
- (lambda (u v)
- (lambdag@ (s)
- (unify u v s))))
-
-(define-syntax fresh
- (syntax-rules ()
- ((_ (x ...) g0 g ...)
- (lambdag@ (s)
- (inc
- (let ((x (var 'x)) ...)
- (bind* (g0 s) g ...)))))))
-
-(define-syntax bind*
- (syntax-rules ()
- ((_ e) e)
- ((_ e g0 g ...) (bind* (bind e g0) g ...))))
-
-(define bind
- (lambda (a-inf g)
- (case-inf a-inf
- (() (mzero))
- ((f) (inc (bind (f) g)))
- ((a) (g a))
- ((a f) (mplus (g a) (lambdaf@ () (bind (f) g)))))))
-
-(define-syntax conde
- (syntax-rules ()
- ((_ (g0 g ...) (g1 g^ ...) ...)
- (lambdag@ (s)
- (inc
- (mplus*
- (bind* (g0 s) g ...)
- (bind* (g1 s) g^ ...) ...))))))
-
-(define-syntax mplus*
- (syntax-rules ()
- ((_ e) e)
- ((_ e0 e ...) (mplus e0
- (lambdaf@ () (mplus* e ...))))))
-
-(define mplus
- (lambda (a-inf f)
- (case-inf a-inf
- (() (f))
- ((f^) (inc (mplus (f) f^)))
- ((a) (choice a f))
- ((a f^) (choice a (lambdaf@ () (mplus (f) f^)))))))
-
-(define-syntax conda
- (syntax-rules ()
- ((_ (g0 g ...) (g1 g^ ...) ...)
- (lambdag@ (s)
- (inc
- (ifa ((g0 s) g ...)
- ((g1 s) g^ ...) ...))))))
-
-(define-syntax ifa
- (syntax-rules ()
- ((_) (mzero))
- ((_ (e g ...) b ...)
- (let loop ((a-inf e))
- (case-inf a-inf
- (() (ifa b ...))
- ((f) (inc (loop (f))))
- ((a) (bind* a-inf g ...))
- ((a f) (bind* a-inf g ...)))))))
-
-(define-syntax condu
- (syntax-rules ()
- ((_ (g0 g ...) (g1 g^ ...) ...)
- (lambdag@ (s)
- (inc
- (ifu ((g0 s) g ...)
- ((g1 s) g^ ...) ...))))))
-
-(define-syntax ifu
- (syntax-rules ()
- ((_) (mzero))
- ((_ (e g ...) b ...)
- (let loop ((a-inf e))
- (case-inf a-inf
- (() (ifu b ...))
- ((f) (inc (loop (f))))
- ((a) (bind* a-inf g ...))
- ((a f) (bind* (unit a) g ...)))))))
-
-(define-syntax project
- (syntax-rules ()
- ((_ (x ...) g g* ...)
- (lambdag@ (s)
- (let ((x (walk* x s)) ...)
- ((fresh () g g* ...) s))))))
-
-(define succeed (== #f #f))
-
-(define fail (== #f #t))
-
-(define onceo
- (lambda (g)
- (condu
- (g succeed)
- ((== #f #f) fail))))