Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 49s
Three conde clauses: empty list -> empty result; head matches x -> skip and recurse; head differs (nafc-gated) -> keep and recurse. Distinct from rembero, which removes only the first occurrence. 5 new tests, 446/446 cumulative.
40 lines
632 B
Plaintext
40 lines
632 B
Plaintext
;; lib/minikanren/tests/removeo-allo.sx — remove every occurrence of x.
|
|
|
|
(mk-test
|
|
"removeo-allo-multi"
|
|
(run*
|
|
q
|
|
(removeo-allo
|
|
2
|
|
(list 1 2 3 2 4 2)
|
|
q))
|
|
(list (list 1 3 4)))
|
|
|
|
(mk-test
|
|
"removeo-allo-single"
|
|
(run*
|
|
q
|
|
(removeo-allo 2 (list 1 2 3) q))
|
|
(list (list 1 3)))
|
|
|
|
(mk-test
|
|
"removeo-allo-no-match"
|
|
(run*
|
|
q
|
|
(removeo-allo 99 (list 1 2 3) q))
|
|
(list (list 1 2 3)))
|
|
|
|
(mk-test
|
|
"removeo-allo-everything"
|
|
(run*
|
|
q
|
|
(removeo-allo 1 (list 1 1 1) q))
|
|
(list (list)))
|
|
|
|
(mk-test
|
|
"removeo-allo-empty"
|
|
(run* q (removeo-allo 1 (list) q))
|
|
(list (list)))
|
|
|
|
(mk-tests-run!)
|