Browse Source

playing with minikanren.

Lucas Stadler 11 years ago
parent
commit
5d95466c73
1 changed files with 23 additions and 0 deletions
  1. 23 0
      scm/logic.scm

+ 23 - 0
scm/logic.scm

@ -0,0 +1,23 @@
1
(load "/home/lu/t/TheReasonedSchemer/mk.scm")
2
(load "/home/lu/t/TheReasonedSchemer/mkextraforms.scm")
3
4
(define peano-o
5
  (lambda (x)
6
    (conde
7
     ((== x 'z) succeed)
8
     (else (fresh (y)
9
                  (== x (list 's y))
10
                  (peano-o y))))))
11
12
(define plus-o
13
  (lambda (x y z)
14
    (conde
15
     ((== x 'z) (== y z))
16
     (else (fresh (sx sz)
17
                  (== x (list 's sx))
18
                  (== z (list 's sz))
19
                  (plus-o sx y sz))))))
20
21
(define cons-o
22
  (lambda (x l r)
23
    (== r (cons x l))))