замкнуть факториальное решение с использованием диапазона и применить упражнение fp-oo - PullRequest
0 голосов
/ 09 декабря 2018

Я работаю через функциональное программирование для объектно-ориентированного программиста Брайана Марика и застрял в упражнении 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

Результаты, которые я получаю, совершенно неожиданны и не поняты.Что я делаю не так и что на самом деле говорят мои результаты?

...