我需要了解如何访问作为输入提供给另一个函数的函数的输入。
例如;我有一个名为f的函数,它只是(define f (lambda (x) (if (null? x) #t (car x))))
这个。我需要编写一个函数,它将此f作为输入并返回另一个函数,
- 定义一个函数(twoback f)
,它将函数f作为输入。
- 作为输出,它应该返回一个新函数g,它具有以下行为:
g(x)= #t如果x是空列表或长度为1的列表。
= f(y) where y=(cdr x) otherwise.
该函数将调用如下:((twoback f3) (list #t #f #t #f))
所以实际上我的问题是:如何在我要写的函数(twoback函数)中访问函数调用给出的列表?因为我需要检查它是否为空。
答案 0 :(得分:2)
简短回答,通过讨论x
参数。像这样:
(define twoback
(lambda (f)
(lambda (x)
...))) ; fill-in with the logic requested
上面将定义一个名为twoback
的过程,它接收f
作为参数,然后它将返回一个接收x
作为参数的新过程。返回的第二个过程是问题g
中的一个,您可以像往常一样访问f
和x
。
现在只需使用预期输出完成...
部分。
答案 1 :(得分:0)
我认为这就是你的意思:
(define (twoback f)
(lambda (x)
(if
(or (null? x) (null? (cdr x)))
#t
(f (cdr x)))))
(define f (lambda (x) (if (null? x) #t (car x))))