我希望在Scheme中创建一个函数,它接受一个谓词和一个元素列表,然后输出两个单独的列表.一个具有匹配给定谓词的原始列表的元素,另一个具有与其不匹配的元素.
我现在所拥有的代码我认为应该隔离与谓词匹配的代码并输出它们的列表,但代码将无效.
(define tear
(lambda (pred xs)
(cond[(null? xs) '()]
[(list? (car xs))(cons((tear (pred (car xs)))(tear (pred (cdr xs)))))]
[(pred (car xs))(cons((car xs)(tear (pred (cdr xs)))))]
[else tear (pred (cdr xs))])))
(tear number? '(1 2 3 a b c))
Run Code Online (Sandbox Code Playgroud)
我的编译器产生的结果是:
tear: arity mismatch;
the expected number of arguments does not match the given number
expected: 2
given: 1
arguments...:
#f
context...:
/home/jdoodle.rkt:2:4: tear
Command exited with non-zero status 1
Run Code Online (Sandbox Code Playgroud)
您可以提供的任何帮助/信息将非常感谢.