我是Scheme/Racket的新学员,所以请原谅任何明显的语法错误。
今天在类里面出现了一个方案列表'(a, b, c)
应该无效,但是当我们运行它时,它返回了:
>'(a . b . c)
(b a c)
这没有任何意义。 Afaik,解释器应使用car'a和cdr'b创建一个cons单元,并且'c应该无效。也就是说,口译员在这里所做的事情确实很奇怪。这适用于#lang方案,#lang Racket 等。我们使用DrRacket作为解释器。
有趣的是,
>'(a . b . c . d)
引发异常并死亡。
我很好奇,很想能够理解这一点,因为我是该语言的新手。 Google非常无助(可能因为搜索字词有点含糊),谢谢!
编辑:
可能是因为
'(a . b . c)
用b解释为中缀运算符。例如:>(4 . + . 6)
返回10。也许解释器像运算符一样使用b?即(b a c)
(类似于(+ 4 6)
),是按固定大小排列的。实验说:
>(define b +)
>(define a 4)
>(define c 6)
>(a . b . c)
10
因此,我认为这可以解决问题,但是我仍然不完全理解“”的使用。在这种情况下的运算符。我认为我们已经解决了这个问题,但是任何其他见解将不胜感激!
最佳答案
简短的回答:知道了。有关这种特定于 Racket 的点的使用的更多信息,请参见 Racket 文档中infix的文档。
关于list - 方案:返回的三个虚线元素的列表异常返回(例如infix运算符?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7449865/