在Scheme中,,
是quasiquote
的缩写,,@
是quasiquote-splicing
的缩写。@
来自哪里?它是为了操作助记符,还是在其他上下文中与 @
一致,或者其他什么或某种组合?
最佳答案
Quasiquotation in Lisp by Alan Bawden 中的第 4 章 History 指出“Quasi-Quotation”来自 W.V. Quine 的数学逻辑(大约 1940 年),但其中不包含用于取消引用的明确标记。麦卡锡在 1960 年左右开发了 Lisp,但也没有提出任何形式的 S 表达式准引用。正是在 1960-1970 年,AI 社区花费了大量精力学习如何使用 S 表达式和列表结构和符号进行编程:
所以在早期的 Lisps 中,@
被用来表示拼接。 McDermott 和 Sussman 的 Conniver 语言开始使用 ,
,这可能是当前使用的来源。
首先,,
是用来表示拼接的,因为认为嵌套的quasiquote
拼接是行不通的。鲍登惊讶地发现,有可能做对。为了不干扰 quasiquote-splicing
和嵌套的 quasiquotation,需要引入新符号来区分这两种用途。
根据 Bawden 的说法,quasiquote-splicing
使用 @
符号并不是为了让读者与新符号混淆。它已经被使用,所以用 quasiquote-splicing
("comma-atsign") 做 ,@X
是有意义的。
为什么我没有找到之前为 @
选择的。可能是因为 @
符号来自拉丁词 ad,意思是 at、to 或 going,并且在 ,@
中你添加了 ,
s...但这是推测。
在 Bawden 中发现的原因是它与其他(历史)上下文中的 @
一致。
关于scheme - 哪里来的,@ quasiquote-splicing 的缩写?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46303837/