LINUX.ORG.RU

История изменений

Исправление 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)

Все нужные параметры входят в определение конкретной функции; функций можно наделать сколько угодно.