gpt4 book ai didi

lambda - 我不明白为什么 lambda 方案有效

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:40 24 4
gpt4 key购买 nike

我是 scheme 的新手,有 c# 背景。

我以为我掌握了 lambda,但我不明白为什么这个例子有效:

(let ([f (lambda x x)]) (f 1 2 3 4) )

答案是 (1 2 3 4),但是如何呢?这是我不明白的 x x 部分。 lambda 没有参数,所以主体是 x x,对吧?但我不知道在这种情况下这意味着什么,有人可以解释一下吗?谢谢。

最佳答案

事实上,您的代码中的 lambda 正在 接收参数,并且是任意数量的参数。没有参数的 lambda 的语法是不同的:

(let ([f (lambda () 1)]) (f))
=> 1

问题中的 lambda 表达式是另外一回事:

(lambda x x)

它接收可变数量的参数列表,然后返回它们。你将它命名为 f,当它被这样调用时:

(f 1 2 3 4) 

所有参数都绑定(bind)到x,一个列表,然后返回x 的值:

'(1 2 3 4)

因此,f 只不过是一个接收多个参数的identity 函数。也许这个answer将阐明如何在 Scheme 中定义可变参数函数。为了完整起见,下面是一个 lambda 示例,它接收一个单个 参数并返回它:

(let ([f (lambda (x) x)]) (f 1))
=> 1

好了,这就是我们定义接收 0、1 或多个参数的 lambda 的方式。

关于lambda - 我不明白为什么 lambda 方案有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53676950/

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