我正在尝试将函数定义为参数,然后将数字传递给该函数.它应该如下所示:
> (function-3 sqrt)
1.7320508075688772
Run Code Online (Sandbox Code Playgroud)
我只是想把函数-3定义为等于3,但它似乎不起作用......这就是我到目前为止所做的:
(define function-3
(? (x)
(3)))
Run Code Online (Sandbox Code Playgroud)
我不知道我是否正在思考正确的道路......但如果有人能够指出我正确的方向,那就太棒了.谢谢
你很接近 - 你只想将参数应用于function-3数字3,如下所示:
(define function-3
(? (x)
(x 3)))
Run Code Online (Sandbox Code Playgroud)
更惯用的是,使用速记函数语法,它可能会像这样写:
(define (function-3 f)
(f 3))
Run Code Online (Sandbox Code Playgroud)
(f通常使用名称而不是x值是函数.)
Racket中的函数(如其母语Scheme所示)只是普通值.在所有括号后面,函数应用程序的语法实际上非常简单.这是一个示例方案表达式:
(f a b c)
^ ^^^^^
| |
function expression argument expressions
Run Code Online (Sandbox Code Playgroud)
请注意,这两个角色中的每一个都是一个表达式.显然,参数可以是表达式,而不仅仅是变量,因为你可以做这样的事情:
> (+ 1 (* 2 3))
7
Run Code Online (Sandbox Code Playgroud)
值得注意的是,函数本身也可以表达.您可以拥有一个生成函数的表单,该表达式可以在函数调用中使用:
> ((? (x) (* x 2)) 3)
6
Run Code Online (Sandbox Code Playgroud)
因此,当您调用时(function-3 sqrt),sqrt函数本身会传递给函数并绑定到函数实现的第一个参数.因此,您需要做的就是将该参数放在函数表达式位置,并且它将像任何其他函数一样被调用.