《快成衣》一书的勘误表?



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的勘误表页面,并将其作为更正提交。(我不能,因为我不拥有这本书,不知道它在哪一页,等等)。

最新更新