(scheme)谓词作为函数的参数

时间:2014-05-11 17:35:08

标签: lambda scheme predicate

在方案中,我想实现一个以谓词作为参数的函数。

(define (delete-rows table predicate)
(filter predicate (cddr table)
)
)

这个我的函数根据谓词过滤列表 我想调用函数如下

(delete-rows student-table
(lambda (table row) ;this is the predicate (two lines)
(eq? (get table row 'name) 'mehmet)))

但它会出现像

这样的错误
filter: contract violation
expected: (any/c . -> . any/c)
given: #<procedure:...cuments\mumu.rkt:88:0>

1 个答案:

答案 0 :(得分:0)

您的谓词需要2个参数(表格,行),但filter将仅使用一个参数(要处理的元素)调用谓词。因此错误。

请参阅我对this question的回答以获得解决方案。