【发布时间】:2016-01-10 00:15:24
【问题描述】:
http://www.4clojure.com/problem/23: "写一个反转序列的函数"
一个解决方案是(fn [x] (reduce conj () x)),它通过了所有测试。但是,我很好奇为什么该解决方案适用于第一次测试:
(= (__ [1 2 3 4 5]) [5 4 3 2 1])
内联函数在 REPL 中计算为 true:
(= ((fn [x] (reduce conj () x)) [1 2 3 4 5]) [5 4 3 2 1])
true
但是,如果我评估= 的第一个参数,我会得到(5 4 3 2 1),而(= (5 4 3 2 1) [5 4 3 2 1]) 会抛出ClassCastException。
为什么前者有效而后者无效?看起来它们应该是等价的……
【问题讨论】:
标签: vector clojure comparison sequence