我尝试将一个函数定义为参数,然后将一个数字传递给该函数。它应该看起来像这样:
> (function-3 sqrt)
1.7320508075688772我正在考虑将function-3定义为等于3,但它似乎不起作用……这就是我到目前为止所知道的:
(define function-3
(λ (x)
(3)))我不知道我的想法是否正确,如果有人能给我指出正确的方向,那就太好了。谢谢
发布于 2016-07-07 13:13:44
接近了-您只需要将function-3的参数应用于数字3,如下所示:
(define function-3
(λ (x)
(x 3)))更有意义的是,使用速记函数语法,它可能会写成这样:
(define (function-3 f)
(f 3))(当值为函数时,通常使用名称f而不是x。)
但是为什么呢?
球拍中的函数(就像它的父语言Scheme一样)只是普通的值。在所有的括号后面,函数应用的语法实际上非常简单。以下是一个示例方案表达式:
(f a b c)
^ ^^^^^
| |
function expression argument expressions请注意,这两个角色都是一个表达式。显然,参数可以是表达式,而不仅仅是变量,因为您可以这样做:
> (+ 1 (* 2 3))
7但是值得注意的是,函数本身也可以是一个表达式。您可以拥有一个生成函数的表单,该表达式可以在函数调用中使用:
> ((λ (x) (* x 2)) 3)
6因此,当您调用(function-3 sqrt)时,sqrt函数本身被传递给函数并绑定到函数实现的第一个参数。因此,您所需要做的就是将该参数放在函数表达式位置,它将像任何其他函数一样被调用。
发布于 2016-07-07 13:12:12
你就差一步了!
(define function-3
(lambda (x)
(x 3)))https://stackoverflow.com/questions/38237612
复制相似问题