这是可用的方案功能吗?

时间:2019-01-11 22:05:27

标签: scheme

我的讲义中的此功能是否正确编写?

(define foo (λ (f) (+ (f 1) (f 2))))

(foo 3)不起作用,并且任何其他参数都表示它需要1个参数。我认为讲师的意思是:

(define foo (λ (f) (+ f f)) )

据我所知(f 1)不是在方案中说任何东西的有效方法,但是如果第一个实际上是正确的函数,谁能给我一个有效输入的例子吗?

2 个答案:

答案 0 :(得分:4)

(define foo (λ (f) (+ (f 1) (f 2))))

可以。它以函数f作为输入。您可以这样称呼它:

(define g (lambda (x) (* x 10)))
(foo g)

答案 1 :(得分:0)

更新:我找到了此示例,因此该功能是正确的。我实际上不确定这里发生了什么。

  

(定义foo(λ(f)(+(f 1)(f 2))))

     

(foo(λ(x)(* x 2)))

输出:6

编辑:没关系,我输入时最终了解了语法。如果参数f是一个函数,则(f 1)表示输入为1的f,则该示例有意义。我应该删除可能对任何人都没有用的问题吗?