使用范围进行Clojure阶乘解并应用fp-oo运动

时间:2018-12-09 15:03:58

标签: clojure functional-programming

我正在研究Brian Marick的面向对象程序员的函数式编程,并坚持练习4。我想出的解决方案与同一个github站点上的解决方案相同:https://github.com/marick/fp-oo/blob/master/solutions/just-enough-clojure.clj

这是我的版本。

(def factorial (fn [num] (apply * (range 1 (inc num)))))

在repl中执行该操作的结果是:

user=> factorial 5
#object[user$factorial 0x3cd52491 "user$factorial@3cd52491"]
5

我期望120。我创建了一个中间函数:

(def range-to (fn [num] (range 1 (inc num))))

然后在以下代码中使用:

user=> (range-to 5)
(1 2 3 4 5)
user=> (apply * (range-to 5))
120

我得到的结果完全出乎意料,并且无法理解。我在做什么错,我的结果实际上是在说什么?

0 个答案:

没有答案