【发布时间】:2011-08-28 01:46:08
【问题描述】:
来自a comment on another question,有人说Clojure 习惯用法更喜欢返回nil 而不是像Scheme 中那样的空列表。这是为什么呢?
喜欢,
(when (seq lat) ...)
而不是
(if (empty? lat)
'() ...)
【问题讨论】:
-
我猜this thread 应该有助于解决这个问题。
-
返回一个虚假值肯定比返回一个真实值更有用。其他 lisp(如 Common Lisp)将空列表视为虚假列表。 Clojure 没有效仿,如 skuro 链接中的答案所述。如果
(if (seq some-list) ...always 执行第一个表单,我会感到惊讶。 -
Scheme 经常不返回空列表,通常 Scheme 过程会返回
#f或根本没有值。空列表主要作为递归过程的基本情况返回。