小编Pad*_*rry的帖子

Scheme/Racket:一个函数,它将列表分成两个与某个谓词匹配的元素列表和与之不匹配的元素列表

我希望在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)

您可以提供的任何帮助/信息将非常感谢.

lisp scheme predicate list racket

1
推荐指数
1
解决办法
739
查看次数

标签 统计

lisp ×1

list ×1

predicate ×1

racket ×1

scheme ×1