gpt4 book ai didi

scheme - 在 Scheme 中使用 'define'

转载 作者:行者123 更新时间:2023-12-03 19:32:24 25 4
gpt4 key购买 nike

我是 Scheme 的新手,只是对“定义”感到好奇。我见过这样的事情:(define (square x) (* x x))这是有道理的[函数名'square'输入参数'x']。但是,我发现了一些 90 年代的示例代码,并试图理解:(define (play-loop-iter strat0 strat1 count history0 history1 limit) (~Code for function~)除了函数名之外,所有这些输入参数吗?

最佳答案

简短的回答 - 是的,第一个符号之后的所有符号都是过程的参数(第一个是过程的名称)。也很高兴指出这一点:

(define (f x y)
(+ x y))

只是语法糖,两种形式是等价的:
(define f
(lambda (x y)
(+ x y)))

一般来说 - 您使用特殊形式 define为了将名称绑定(bind)到值,该值可以是任何可用的数据类型,包括特定的函数(lambdas)。

关于参数和过程定义的更多信息 - 很高兴知道 .表示法可用于定义具有可变数量参数的过程,例如:
(define (f . x) ; here `x` is a list with all the parameters
(apply + x))

(f 1 2 3 4 5) ; 0 or more parameters can be passed
=> 15

最后一招 define (并非在所有口译员中都可用,但在 Racket 中有效)。定义返回过程的过程的快速快捷方式,如下所示:
(define (f x)
(lambda (y)
(+ x y)))

...这相当于这个,更短的语法:
(define ((f x) y)
(+ x y))

((f 1) 2)
=> 3

关于scheme - 在 Scheme 中使用 'define',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15959319/

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