我正在学习Guile Scheme,在文档中我突然遇到了以下构造:
((lambda args (display args)) 42)
=> (42)
Run Code Online (Sandbox Code Playgroud)
这让我陷入了困境; 直到这一点,我假设正式参数始终包含在列表中:
((lambda (args) (display args)) 42)
=> 42
Run Code Online (Sandbox Code Playgroud)
我想知道何时使用这个变体,以及它如何与可变数量的参数的点表示法不同.具体来说,以下两个变体之间有什么区别:
((lambda args (display args)) 1 2 3) => (1 2 3)
((lambda (. args) (display args)) 1 2 3) => (1 2 3)
Run Code Online (Sandbox Code Playgroud)
是否存在差异 - 也许是为了更复杂的例子 - 我需要注意并且是否有理由更喜欢一个而不是另一个?