Это пример кода из книги Programming Clojure (2nd edition), который вычисляет основные значения.Соответствующие параметры с let/fn в Clojure
(def primes
(concat
[2 3 5 7]
(lazy-seq
(let [primes-from
(fn primes-from [n [f & r]]
(if (some #(zero? (rem n %))
(take-while #(<= (* % %) n) primes))
(recur (+ n f) r)
(lazy-seq (cons n (primes-from (+ n f) r)))))
wheel (cycle [2 4 2 4 6 2 6 4 2 4 6 6 2 6 4 2
6 4 6 8 4 2 4 2 4 8 6 4 6 2 4 6
2 6 6 4 2 4 6 2 6 4 2 4 2 10 2 10])]
(primes-from 11 wheel)))))
код имеет структуру, которая определяет локальную функцию primes-from
использовать, что в форме, пусть.
(def primes
(concat
[2 3 5 7]
(lazy-seq
(let [primes-from (fn primes-from [n [f & r]] ... ]
(primes-from 11 wheel)))))
Однако, я не уверен, как первый параметр 11
и второй параметр wheel
матчей к [primes-from (fn primes-from [n [f & r]] ... ]
структуре.
Кроме того, я не вижу, как параметр primes-from
при определении анонимной функции (fn primes-from [n [f & r]]
.
Любые объяснения по поводу этого кода?