(lambda (head . rest)
(...))
我在尝试学习一些方案时在网上遇到了这段代码,但我找不到任何有用的解释。
这是什么意思?它是像 ML 中那样的某种模式匹配吗? (顺便说一句,他们只将这个 lambda 应用于一个参数!)
最佳答案
在此过程中:
(lambda (arg . args)
(...))
语法表明 lambda
形式需要一个强制参数绑定(bind)到名称 arg
和一个包含零个或多个元素(可变数量的参数)绑定(bind)的列表到名称 args
。这是 variadic function 的示例.
命名过程可以使用相同的语法,注意可以将任意数量的参数指定为强制性参数,之后其余的参数被认为是可选的;看看这个例子:
(define (test arg . args)
(apply + arg args))
(test) ; will cause an error, at least one argument is expected
(test 10) ; returns 10
(test 10 4) ; returns 14
(test 10 4 2) ; returns 16
关于lambda - chez 计划特别 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13459821/