я в настоящее время переживаю книги Clojure для храброго и Истинного, в попытке выучить язык, но я немного повесил на ленивых seqs, и я боюсь, the book does a poor job explaining them , Но, согласно книге, что-то вроде этого:Ленивый seqs не отложив вычисление
(defn wait-for-a-bit [arg]
(Thread/sleep 1000))
(defn get-map [seq]
(map wait-for-a-bit seq))
(time (first (get-map [1 2 3 4 5 6 7 8 9 0])))
Если взять только около одной секунды, чтобы обработать, так как значение для ленивой SEQ не рассчитываются (реализованная?), Пока он не доступен. Однако, когда я запускаю вышеуказанный код, это занимает около десяти секунд, поэтому ясно, что отложенные вычисления не происходят. Я просмотрел документы по адресу clojuredocs.org, и я думаю, что я понимаю lazy-seq, но я думаю, что просто не в контексте карты, уменьшения и т. Д.
Я видел похожие. то я попробовал '(time (first (get-map (iterate inc 1000)))), который дал мне более интуитивный ответ в 1 секунду. – lispHK01