diff options
| author | Jedidiah Barber <contact@jedbarber.id.au> | 2026-01-29 22:12:41 +1300 |
|---|---|---|
| committer | Jedidiah Barber <contact@jedbarber.id.au> | 2026-01-29 22:12:41 +1300 |
| commit | 9b964acdb0cc36d09193861b8f7d33aea248ee46 (patch) | |
| tree | 764aa907e04ba3abeb4e348c3f9683620f91f269 /scheme/logo.scm | |
| parent | ef17f7c61ba43390b3000295579e96a8354c6e17 (diff) | |
Some equivalent test programs in Scheme running on microKanren and miniKanren for benchmark comparisonsHEADmaster
Diffstat (limited to 'scheme/logo.scm')
| -rw-r--r-- | scheme/logo.scm | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/scheme/logo.scm b/scheme/logo.scm new file mode 100644 index 0000000..18fc9ed --- /dev/null +++ b/scheme/logo.scm @@ -0,0 +1,49 @@ + +; Equivalent to test/logo.adb + + +(define (value bin) + (cond + ((null? bin) 0) + ((zero? (car bin)) (* 2 (value (cdr bin)))) + (#t (+ 1 (* 2 (value (cdr bin))))))) + + +(define (test pow base) + (begin + (display (string-append "log_" (number->string base) " (" (number->string pow) ") = ")) + (let* ((n (build-num pow)) + (b (build-num base)) + (s (run 1 (d) (fresh (q r) (== d `(,q ,r)) (logo n b q r)))) + (q (car (car s))) + (r (car (cdr (car s))))) + (begin + (display (value q)) + (display " r ") + (display (value r)) + (newline))))) + + +(define (run-logo args) + (begin + (display "Logarithm") + (newline) + (test 1 1) + (test 68 2) + (test 68 3) + (test 68 4) + (test 68 5) + (test 68 6) + (test 68 7) + (test 68 8) + (newline) + (display "Expected Failure") + (newline) + (display (run 1 (d) (fresh (q r) (== d `(,q ,r)) (logo 68 1 q r)))) + (newline) + (display (run 1 (d) (fresh (q r) (== d `(,q ,r)) (logo 68 0 q r)))) + (newline) + (display (run 1 (d) (fresh (q r) (== d `(,q ,r)) (logo 0 0 q r)))) + (newline))) + + |
