lambda - chez 计划特别 lambda

标签 lambda scheme apply

(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/

相关文章:

macros - 在Scheme中使用define-macro捕获变量的机制

方案范围(定义和让)

r - 如何将一个简单的函数应用于多个列?

Javascript 使用 `apply()` 传递参数数组,但保留 `this` 对 `call()` 的引用

python - 将按钮信号绑定(bind)到 Qt 中的插槽所需的另一种解决方案

python - 使用 lambda 函数将 double for 循环转换为列表理解

java - 如何使用java查找shell脚本中的所有交互式命令?

java - 将 lambda 方法从 Java 迁移到 Kotlin 时出现 "Type mismatch"

vim - Vim中行号的背景的方案名称是什么?

函数 apply trap 的 javascript 代理无法访问接收者代理