gpt4 book ai didi

racket - 将函数定义为参数并在 Racket 中传递一个数字

转载 作者:行者123 更新时间:2023-12-01 15:07:39 24 4
gpt4 key购买 nike

我试图将一个函数定义为参数,然后将一个数字传递给该函数。它应该如下所示:

> (function-3 sqrt)

1.7320508075688772

我正在考虑将 function-3 定义为等于 3,但它似乎不起作用......这就是我到目前为止所拥有的:
(define function-3
(λ (x)
(3)))

我不知道我是否在思考正确的道路……但如果有人能指出我正确的方向,那就太好了。谢谢

最佳答案

你已经接近了——你只想应用 function-3 的参数到号码3 , 像这样:

(define function-3
(λ (x)
(x 3)))

更惯用的是,使用速记函数语法,它可能会这样写:
(define (function-3 f)
(f 3))

(当值是函数时,通常使用名称 f 而不是 x。)

但为什么?

Racket 中的函数(就像它的母语 Scheme 一样)只是普通的值。在所有括号后面,函数应用的语法实际上非常简单。这是一个示例方案表达式:
                 (f a b c)
^ ^^^^^
| |
function expression argument expressions

请注意,这两个角色中的每一个都是一个表达式。显然,参数可以是表达式,而不仅仅是变量,因为您可以执行以下操作:
> (+ 1 (* 2 3))
7

但值得注意的是,函数本身也可以是一个表达式。您可以有一个生成函数的表单,并且该表达式可以在函数调用中使用:
> ((λ (x) (* x 2)) 3)
6

所以当你调用 (function-3 sqrt) , sqrt函数本身被传递给函数并绑定(bind)到函数实现的第一个参数。因此,您需要做的就是将该参数放在函数表达式位置,它将像任何其他函数一样被调用。

关于racket - 将函数定义为参数并在 Racket 中传递一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38237612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com