Racket(lisp编程语言)中[]和()括号之间有什么区别?

Mah*_*ati 13 convention syntax brackets racket

在我看来,技术上两者都是可以互换的,但具有不同的传统含义.

The*_*kis 18

据球拍文档,没有任何区别-只有使用惯例[]cond条款(和使用你的判断其余的,据我了解):

对cond条款使用方括号是一种惯例.在Racket中,括号和方括号实际上是可互换的,只要(匹配)和[匹配]即可.在几个关键位置使用方括号使得Racket代码更具可读性.

在没有任何关于Racket语言设计的知识的情况下,我的猜测是引入方括号作为对许多Lisp表达式难以阅读的抱怨的回应,因为大量相同的括号,特别是在末尾深层嵌套的结构.换句话说,它可能用于让您的眼睛轻松地在代码中建立一些参考点,以确定您在任何给定点关闭的括号.

  • `{`和`}`也是括号的另一个等价物,但鼓励用于特定用例(如预制结构文字).有关[Reader Syntax]的更多信息(https://docs.racket-lang.org/reference/reader.html#%28part._default-readtable-dispatch%29). (5认同)