如何将函数作为变量实现到Scheme中的更高函数中?
我想创建一个名为如何将函数作为变量实现到Scheme中的更高函数中?,scheme,racket,higher-order-functions,Scheme,Racket,Higher Order Functions,我想创建一个名为listfilter的高阶函数,它将接受以下输入 (listfilter greaterthan5 '(2 3 4 5 6 7 8)) 这将获取我的列表并通过我选择的函数运行它,在本例中,该函数检测数字是否大于5,如果大于5,则返回列表中所有大于5的数字: output: (6 7 8) 下面是一个简单的大于函数的示例 (define greaterthan5 (lambda (num) (if (> num 5)
listfilter
的高阶函数,它将接受以下输入
(listfilter greaterthan5 '(2 3 4 5 6 7 8))
这将获取我的列表并通过我选择的函数运行它,在本例中,该函数检测数字是否大于5,如果大于5,则返回列表中所有大于5的数字:
output: (6 7 8)
下面是一个简单的大于函数的示例
(define greaterthan5 (lambda (num) (if (> num 5)
#t
#f)))
我不确定如何将函数作为高阶函数中的变量来实现,因此任何指导都会很好,谢谢。使用和递归。该函数绑定到symbolf
,并在列表的每个元素上递归调用。当此调用(f(carlst))
返回#true
时,该元素被添加到新列表中
(define (listfilter f lst)
(cond ((empty? lst) '())
((f (car lst)) (cons (car lst)
(listfilter f (cdr lst))))
(#true (listfilter f (cdr lst)))))
顺便说一下,您可以简化该谓词:
(define greaterthan5? (lambda (num) (> num 5)))