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