我正在尝试创建一个函数(last),它将函数(f)和List作为参数。列表被传递给函数(奇数?),如果列表中的最后一个元素是奇数,则返回true(#t),否则返回false(#f)。但是下面的代码不起作用,正确的方法是什么将该函数声明为参数。
(define (last f L)
(if (null? L) '() ( last f (cdr L)) ))
(最后奇数?'(0 5 3 8 6 7))
答案 0 :(得分:2)
在这里'如何使用内置函数编写解决方案,注意将过程作为参数传递的正确语法,并且还要注意将函数命名为as是一个坏主意last
,它与现有程序发生冲突,就像你应该用来解决问题一样!
(define (my-last f L)
(f (last L)))
如果您必须从头开始编写该函数,请确保您了解所需的基本情况:
(define (my-last f L)
(cond ((null? L) #f)
((null? (cdr L)) (f (car L)))
(else (my-last f (cdr L)))))
无论哪种方式,它都按预期工作:
(my-last odd? '(0 5 3 8 6 7))
=> #t
答案 1 :(得分:-1)
对于您编写函数的方式,您在调用中设置了额外的括号。它应该只是(last odd? '(0 5 3 8 6 7))
,正如有人在评论中建议你的那样。