【发布时间】:2011-04-21 01:26:49
【问题描述】:
在我向不熟悉 clojure 的同事解释一些 clojure 代码之前,我从来没有真正想过这个问题。当他问为什么你使用向量来声明绑定而不是列表时,我正在向他解释let。我真的没有给他答案。但是语言确实限制您使用列表:
=> (let (x 1) x)
java.lang.IllegalArgumentException: let requires a vector for its binding (NO_SOURCE_FILE:0)
为什么会这样?
【问题讨论】:
-
我想这纯粹是为了可读性,而 let 强制执行向量只是确保保留成语。
-
(几乎所有“let”和“with-”宏都需要文字向量。)
-
这有点像自然法则。你可以推理那个它是那样的,但不能为什么。这个决定的真正原因是否是可读性、某些方案的实施、惯例或 Rich 那天吃的早餐类型仍然是未知数。能回答这个问题的,只有里奇本人。对于 Clojure,我们处于一个幸运的位置,对于宇宙来说......