方案:三个虚线元素的列表奇怪地返回(像中缀运算符?)

Ert*_*ohl 6 syntax scheme list infix-notation racket

我是一名新的Scheme/Racket学生,所以请原谅任何明显的语法错误.

今天课堂上出现的方案列表'(a, b, c)应该是无效的,但是当我们运行它时,它返回:

>'(a . b . c)  
(b a c)
Run Code Online (Sandbox Code Playgroud)

这毫无意义.Afaik,翻译应该创建一个带有'a和cdr'b'的cons单元格,'c应该是无效的.也就是说,翻译在这里做了一些非常奇怪的事情.这适用于#lang方案,#lang racket等.我们使用DrRacket作为翻译.

有趣的是,

>'(a . b . c . d)
Run Code Online (Sandbox Code Playgroud)

抛出异常并死亡.

我非常好奇,很想能够理解这一点,因为我不熟悉这门语言.谷歌非常无益(可能因为搜索条件有点含糊不清)谢谢!

编辑:可能是因为'(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
Run Code Online (Sandbox Code Playgroud)

所以我认为这解决了这个问题,但我仍然不完全理解"."的使用.在这种情况下运算符.我想我们已经解决了这个问题,但我们将非常感谢您的见解!

Joh*_*nts 8

简短的回答:你明白了.有关此特定于球拍的点的使用的更多信息,请参阅 Racket文档中的中文档.