在Racket(一种Lisp编程语言)中,方括号[ ]和圆括号( )有什么区别?

30

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

1个回答

38

根据Racket文档,实际上没有区别——只是约定使用[]来表示cond子句(对于其余部分则需自行判断,就我所知):

在Racket中,使用方括号表示cond子句只是一种约定。实际上,括号和方括号是可以互换的,只要(与)匹配,[与]匹配即可。在一些关键位置使用方括号可以使Racket代码更易读。

虽然我不了解Racket语言的设计,但我猜测方括号的出现是为了解决许多Lisp表达式由于大量相同的括号而难以阅读的问题,特别是在深度嵌套结构的末尾。换句话说,它可能用于允许您的眼睛在代码中轻松建立一些参考点,以确定在任何给定点处要关闭哪个括号。


9
{}也可以作为括号的另一种等效形式,但建议在特定情况下使用(例如预制结构体字面值)。有关读取器语法的更多信息。 - Winny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接