此计划代码是什么意思?(使用lambda的'list'运算符的定义)

苏宾P

作为编译并返回参数列表的列表运算符的定义,我在本教程中发现了该方案代码

(define list
(lambda args args))

但是,这与我所知道的通常的lambda语法不匹配。我的意思是,lambda应该在方括号等中包含参数。请说明其工作原理。

巴希特·帕里克(Bhashit Parikh)

尽管lambda中参数的一般形式似乎总是包含括号,但这并不是必需的。如果看一下The Scheme Programming Language 4e中的这一部分,它说:

lambda的一般形式比我们之前看到的形式复杂一点,因为形式参数规范(var ...)不必是正确的列表,甚至根本不需要列表形式参数规范可以采用以下三种形式中的任何一种:

  1. 正确的变量列表(var1 ... varn),例如我们已经看到的,
  2. 一个变量var n,或
  3. 不正确的变量列表(var1 ... varn。varr)。

在第一种情况下,必须精确地提供n个实际参数,并且每个变量都绑定到相应的实际参数。第二,任何数量的实际参数都是有效的;所有实际参数都放在一个列表中,并且单个变量绑定到该列表。

粗体部分(由我设置为粗体)是与您的问题非常相关的部分。就像您的教程说的那样,它是一个varargs参数,它被转换为列表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章