在方案中,我想实现一个以谓词作为参数的函数。
(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>
答案 0 :(得分:0)
您的谓词需要2个参数(表格,行),但filter
将仅使用一个参数(要处理的元素)调用谓词。因此错误。
请参阅我对this question的回答以获得解决方案。