list - 方案:返回的三个虚线元素的列表异常返回(例如infix运算符?)

标签 list syntax scheme racket infix-notation

我是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/

相关文章:

c++ - C++ STL vector/列表容器的 Python 等效项

python - 替换 Python 列表中的重复字符串

c++ - 与临时对象一起使用时了解 C++ std::shared_ptr

bash - 在 if 语句中使用 && 运算符

scheme - 什么:+ and :or do on Scheme?

C++如何访问结构列表的字符串成员

python - 在具有类的列表上使用 python Sorted 函数

C++ 字符数组 : error while copying data

lisp - 如何在 plt 方案中使用 'destroy/dispose' frame%?

scheme - 如何反转 Racket 中的序列?