这是对 Scheme、Racket、Common Lisp 和 Clojure 中方括号行为的正确描述吗?

J. *_*ini 3 lisp scheme clojure common-lisp square-bracket

我最近做了一些挖掘。由于我缺乏 Lisp 经验,我想验证一下我的发现。这是对 Scheme、Racket、Common Lisp 和 Clojure 中方括号行为的正确描述吗?

Sva*_*nte 5

我认为对于Scheme,你说得对。

\n

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

\n

在 Clojure 中,方括号表示向量,它是一种与列表等不同的集合。代码中对文字向量的求是根据内部求值形式构造一个新的向量。示例:[a \'b (+ a b)]计算 的值a、名为 的符号b以及 和 的值之a和的新向量b。宏和其他特殊形式通常使用向量来表示不作为函数调用进行计算的语法部分。示例:(defn foo [a b c] \xe2\x80\xa6)\xe2\x80\x94 将作为形式参数绑定到函数定义主体中的符号向量。 \xe2\x80\x94和 的(let [a 1 b (+ a forble)] \xe2\x80\xa6)词法绑定。ab

\n

  • 所以在Scheme中括号是用来增加代码可读性的。在 Clojure 中,它们用作创建向量并提高代码可读性的符号。在 Common Lisp 中,它们用于提供数据结构符号和嵌入语言(SQL,...)。这是一个公平的总结吗? (2认同)
  • 我喜欢苹果-][例子:-) (2认同)