Mark McDonnell的《Quick Clojure》有勘误表吗?
我去了出版商的网站,在那里找不到:https://www.apress.com/gp/book/9781484229514
具体来说,我认为第50页下面有一个错误:
(defn add-n [n, coll]
(lazy-seq (cons
(+ n (first coll))
(add-n n (rest coll)))))
(type (add-n (range)))
;; clojure.lang.LazySeq
(take 10 (add-n (range))) ;; <--- Error here: `add-n` requires 2 arguments ?
;; (5 6 7 8 9 10 11 12 13 14)
让我们看看是否能弄清楚这是什么意思。从注释中我们知道
(take 10 (add-n (range)))
表示返回(5 6 7 8 9 10 11 12 13 14)
。似乎缺少的参数是n
,最初猜测应该是一个数字,因此add-n
的调用应该看起来像
(add-n _ (range)))
那么我们可以使用什么值来替换_
以使其返回期望的值呢?显而易见的答案是5
。我们通过
(take 10 (add-n 5 (range)))
返回
(5 6 7 8 9 10 11 12 13 14)
就是这样了。现在你可以去Apress的勘误表页面,并将其作为更正提交。(我不能,因为我不拥有这本书,不知道它在哪一页,等等)。