我是一名新计划/球拍学生,请原谅任何明显的语法错误。Scheme:奇怪返回的三个虚线元素列表(如中缀运算符?)
它今天上课想出了这个计划列表'(a, b, c)
应该是无效的,但是当我们运行它,它返回:
>'(a . b . c)
(b a c)
这是没有意义的。 Afaik,口译员应该用汽车'a和cdr'b创建一个cons cell,'c应该是无效的。也就是说,解释者在这里做了一些非常奇怪的事情。这适用于#lang方案,#lang球拍等。我们使用DrRacket作为解释器。
有趣的是,
>'(a . b . c . d)
抛出异常和死亡。
我很好奇,希望能够理解这一点,因为我是新手语言。谷歌是非常无益的(可能因为搜索条件有点模糊)谢谢!
编辑: 这可能是因为'(a . b . c)
被解释为b作为中缀运算符。例如:>(4 . + . 6)
返回10.也许解释器使用b就像操作符一样?即(b a c)
,如(+ 4 6)
,并入。
Expermentation说:
>(define b +)
>(define a 4)
>(define c 6)
>(a . b . c)
10
所以我觉得这个问题解决了,但我还是不完全了解使用的“”在这种情况下运营商。我想我们已经解决了这个问题,但更多的见解将不胜感激!
操作员两边的小圆点让我想起了Fortran:1.LT。 3 – JasonFruit