Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 25s
Mirrors the structure all-distincto already uses internally: walk the
list, ensure each element is not equal to x via nafc, recurse on tail.
Useful as a constraint-style filter:
(membero x (list 1 2 3 4 5))
(not-membero x (list 2 4))
-> x in {1, 3, 5}
4 new tests, 382/382 cumulative.
30 lines
556 B
Plaintext
30 lines
556 B
Plaintext
;; lib/minikanren/tests/not-membero.sx — relational "not in list".
|
|
|
|
(mk-test
|
|
"not-membero-absent"
|
|
(run* q (not-membero 99 (list 1 2 3)))
|
|
(list (make-symbol "_.0")))
|
|
(mk-test
|
|
"not-membero-present"
|
|
(run* q (not-membero 2 (list 1 2 3)))
|
|
(list))
|
|
(mk-test
|
|
"not-membero-empty"
|
|
(run* q (not-membero 1 (list)))
|
|
(list (make-symbol "_.0")))
|
|
|
|
(mk-test
|
|
"not-membero-as-filter"
|
|
(run*
|
|
q
|
|
(fresh
|
|
(x)
|
|
(membero
|
|
x
|
|
(list 1 2 3 4 5))
|
|
(not-membero x (list 2 4))
|
|
(== q x)))
|
|
(list 1 3 5))
|
|
|
|
(mk-tests-run!)
|