我最近正在使用方案本身实现一个方案解释器。我知道单点表示法意味着构造一对或定义一个具有多个参数的lambda。但后来我发现了
'(3 . 4 . 5)
评估为
'(4 3 5)
和
(define (a . b . c) (displayln b) (displayln c))
(a 4 3)
它会打印(很奇怪#\ newline没有打印)
(4 3)>
有人可以解释双点表示法的含义吗?
答案 0 :(得分:0)
来自http://docs.racket-lang.org/reference/reader.html
如果读者之间发现三个或更多数据 匹配括号,如果是一对分隔的.s 包围除第一个和最后一个元素以外的任何元素, 结果是一个包含所包围元素的列表 由.s作为第一个元素,其次是其他元素 阅读顺序。这个约定支持一种 读者级别的中缀符号。
Racket为中缀函数调用提供双点语法:
(2 . + . 3) => 5