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

问题描述

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

解决方法

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

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

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