作为编译并返回参数列表的列表运算符的定义,我在本教程中发现了该方案代码
(define list
(lambda args args))
但是,这与我所知道的通常的lambda语法不匹配。我的意思是,lambda应该在方括号等中包含参数。请说明其工作原理。
尽管lambda中参数的一般形式似乎总是包含括号,但这并不是必需的。如果看一下The Scheme Programming Language 4e中的这一部分,它说:
lambda的一般形式比我们之前看到的形式复杂一点,因为形式参数规范(var ...)不必是正确的列表,甚至根本不需要列表。形式参数规范可以采用以下三种形式中的任何一种:
- 正确的变量列表(var1 ... varn),例如我们已经看到的,
- 一个变量var n,或
- 不正确的变量列表(var1 ... varn。varr)。
在第一种情况下,必须精确地提供n个实际参数,并且每个变量都绑定到相应的实际参数。第二,任何数量的实际参数都是有效的;所有实际参数都放在一个列表中,并且单个变量绑定到该列表。
粗体部分(由我设置为粗体)是与您的问题非常相关的部分。就像您的教程说的那样,它是一个varargs参数,它被转换为列表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句