MiniKanren membero
;; Goal is to see if x is member of l => succeed
(define membero
(lambda (x l)
(conde
;; x is not a member of an empty list
((nullo l) #u)
((eq-caro l x) #s)
(else
(fresh (d)
(cdro l d)
(membero x d))))))
Interesting properties
(run* (y)
(membero y l)) ;; y is always == l