Racket(lisp 编程语言)中的 [ ] 和 ( ) 括号有啥区别?

Posted

技术标签:

【中文标题】Racket(lisp 编程语言)中的 [ ] 和 ( ) 括号有啥区别?【英文标题】:What is the difference between [ ] and ( ) brackets in Racket (lisp programming language)?Racket(lisp 编程语言)中的 [ ] 和 ( ) 括号有什么区别? 【发布时间】:2017-05-16 00:47:37 【问题描述】:

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

【问题讨论】:

【参考方案1】:

According to the Racket documentation,没有区别 - 只有约定使用 [] 用于 cond 子句(据我了解,其余部分使用您的判断):

对 cond 子句使用方括号是一种约定。在 Racket 中,括号和方括号实际上是可以互换的,只要 ( 匹配 ) 和 [ 匹配 ]。在几个关键位置使用方括号使 Racket 代码更具可读性。

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

【讨论】:

也是括号的另一个等价物,但鼓励用于特定用例(如预制结构文字)。有关Reader Syntax 的更多信息。

以上是关于Racket(lisp 编程语言)中的 [ ] 和 ( ) 括号有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

sicp 中的lisp的语法(使用racket编译)

Scheme可以在没有Racket的情况下做GUI吗?还是必须使用 Common Lisp?

安装Emacs并设置racket环境

The Racket Guide

使用 VIM 的编程方案(Racket) - 如何开始

为啥 Common Lisp 在没有引号的情况下评估符号本身?