首页 > 解决方案 > Is this a correct characterisation of the behaviours of square brackets in Scheme, Racket, Common Lisp, and Clojure?

问题描述

I've recently done some digging. Due to my lack of Lisp experience, I want to verify what I've found. Is this a correct characterisation of the behaviours of square brackets in Scheme, Racket, Common Lisp, and Clojure?

标签: clojureschemelispcommon-lispsquare-bracket

解决方案


我认为对于Scheme,你是对的。

在 Common Lisp 中,标准不是 CLtL2,而是 ANSI 标准,在所有意图和目的上都与 CLHS 相同(例如https://clhs.lisp.se)。读者行为在第 2 节中定义。默认情况下(即在标准语法中)方括号是组成字符,因此可以在符号名称中使用它们而无需特殊转义。例如,[, [], ][, APPLE-][, >][<,[[[等都是有效的符号名称,无需转义即可使用。然而,这些字符是明确保留给程序员在他们自己的可读表中使用的。有几个库使用它,例如用于 SQL 文字的 CLSQL。

在 Clojure 中,方括号表示向量,它是一种独立于列表的集合。代码中文字向量的求值是在内部构造一个新的求值形式的向量示例:计算为 的值、名为 的符号以及 和 的值之和[a 'b (+ a b)]的新向量。宏和其他特殊形式通常将向量用于不作为函数调用进行评估的语法部分。示例:— 在函数定义主体中作为形式参数绑定的符号向量。 —和的词法绑定。abab(defn foo [a b c] …)(let [a 1 b (+ a forble)] …)ab


推荐阅读