怎么回事,在Common Lisp的反引号评价:分隔符和运营商
`(1 ,(+ 1 1) (- 4 1) 4) ; '(1 2 (- 4 1) 4)
减号(“ - ”)不作为操作员处理(但作为一个象征;“ - 而不是#” )(这部分我想我明白了。)
但是,为什么第三个左括号的确被评估为'(
- >(list
...(即,列表/表达式分隔符,而不是只是一个像' - above'这样的字面意思)解释器是否在结束分隔符处“向前看”,或者它是否简单地说:“好的,这应该是一个列表。如果右侧没有分隔符,表达无效,这不是我的问题。“?
对不起,有一个令人困惑的问题;煮沸它,我想我的问题是:解释器如何逐步评估上面的列表正确? (也可随意更正术语。)
“如果反引号引用的话,为什么括号仍然意味着列表,而不仅仅是一个文本?这就是要点,除非我知道这不是文字。 (我写了“符号”,但你的“单词原子”可能更好)。至于你的回答 - 公平地说 - **首先**树根据列表完成,然后**操作是并且反引用是一种操作符,这就是为什么反引用内的列表仍然是列表的原因? (Sill有些困惑。) – 2012-07-22 20:54:10
这是由读者应用的。它在同一时间*完成转换为列表。反引用不像运行时发生的任何事情那样是一个操作符。它是解析输入的代码的特殊指令。它发生在任何评估之前。 – 2012-07-22 21:13:05