我已经开始使用 Clojure 做 Project Euler,作为学习 Clojure 的第一次尝试。我已经解决了第一个任务:
求 1000 以下所有 3 或 5 的倍数之和。
我以前用 Python 解决过它:
sum(i for i in xrange(1000) if i%3==0 or i%5==0)
这是我的第一次 Clojure 尝试:
(reduce +
(filter
(fn [x]
(or
(= 0 (mod x 3))
(= 0 (mod x 5))))
(range 1000)))
我实际上对它的冗长感到惊讶,但我很确定这是因为我的风格和对 Clojure 习语的无知。
这个 Clojure 代码的惯用版本会是什么样子?