【发布时间】:2013-12-11 20:41:31
【问题描述】:
我需要创建一个在 Scheme 中过滤掉谓词的函数。例如(filter-out number? '(a 2 #f b 7)):输出将是(a #f b)
我拥有的函数返回一个过滤掉的列表。我怎样才能改变它以获得我需要的东西?谢谢
(define (filter pred lst)
(reverse (filter-help pred lst '())))
(define (filter-help pred lst res)
(cond ((null? lst) res)
((pred (car lst))
(filter-help pred (cdr lst) (cons (car lst) res)))
(else
(filter-help pred (cdr lst) res))))
【问题讨论】:
-
错字*抱歉。输出应该是 (a #f b)
标签: recursion filter functional-programming scheme predicate