首页 > 解决方案 > clojure 阶乘解决方案使用范围和应用 fp-oo 练习

问题描述

我正在研究 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

我得到的结果完全出乎意料,也不被理解。我做错了什么,我的结果实际上在说什么?

标签: clojurefunctional-programming

解决方案


推荐阅读