История изменений
Исправление Nervous, (текущая версия) :
Тут еще не до оптимизации кода
Я имею в виду что-то такое
(ns fns)
(defn slow-ascending-fn
"y = floor(1/2 * x)"
[x]
(int (* 1/2 x)))
(defn fast-ascending-fn
"y = floor(x^2)"
[x]
(int (* x x)))
(defn combined-fn
"y = floor(floor(1/2 * x)^2)"
[x]
((comp fast-ascending-fn slow-ascending-fn) x))
(def naturals (iterate inc 0))
(def slow (map slow-ascending-fn naturals))
(def fast (map fast-ascending-fn naturals))
(def combined (map combined-fn naturals))
(take 10 naturals) ;; => (0 1 2 3 4 5 6 7 8 9)
(take 10 slow) ;; => (0 0 1 1 2 2 3 3 4 4)
(take 10 fast) ;; => (0 1 4 9 16 25 36 49 64 81)
(take 10 combined) ;; => (0 0 1 1 4 4 9 9 16 16)
Все нужные параметры входят в определение конкретной функции; функций можно наделать сколько угодно.
Исправление Nervous, :
Тут еще не до оптимизации кода
Я имею в виду что-то такое
(ns fns)
(defn slow-ascending-fn
"y = floor(1/2x)"
[x]
(int (* 1/2 x)))
(defn fast-ascending-fn
"y = floor(x^2)"
[x]
(int (* x x)))
(defn combined-fn
"y = floor(floor(1/2 * x)^2)"
[x]
((comp fast-ascending-fn slow-ascending-fn) x))
(def naturals (iterate inc 0))
(def slow (map slow-ascending-fn naturals))
(def fast (map fast-ascending-fn naturals))
(def combined (map combined-fn naturals))
(take 10 naturals) ;; => (0 1 2 3 4 5 6 7 8 9)
(take 10 slow) ;; => (0 0 1 1 2 2 3 3 4 4)
(take 10 fast) ;; => (0 1 4 9 16 25 36 49 64 81)
(take 10 combined) ;; => (0 0 1 1 4 4 9 9 16 16)
Все нужные параметры входят в определение конкретной функции; функций можно наделать сколько угодно.
Исходная версия Nervous, :
Тут еще не до оптимизации кода
Я имею в виду что-то такое
(ns fns)
(defn slow-ascending-fn
"y = floor(1/2x)"
[x]
(int (* 1/2 x)))
(defn fast-ascending-fn
"y = floor(x^2)"
[x]
(int (* x x)))
(defn combined-fn
"y = floor(floor(1/2 * x))^2"
[x]
((comp fast-ascending-fn slow-ascending-fn) x))
(def naturals (iterate inc 0))
(def slow (map slow-ascending-fn naturals))
(def fast (map fast-ascending-fn naturals))
(def combined (map combined-fn naturals))
(take 10 naturals) ;; => (0 1 2 3 4 5 6 7 8 9)
(take 10 slow) ;; => (0 0 1 1 2 2 3 3 4 4)
(take 10 fast) ;; => (0 1 4 9 16 25 36 49 64 81)
(take 10 combined)
Все нужные параметры входят в определение конкретной функции; функций можно наделать сколько угодно.