неожиданный вывод для карты внутри do - PullRequest
4 голосов
/ 29 августа 2010

Почему это не дает ожидаемого результата?

(defn test-fn []
  (do
    (println "start")
    (map #(println (+ % 1)) '(1 2 3))
    (println "done")))

Он выводит

start
done

В то время как я ожидал бы

start
2 3 4
done

1 Ответ

7 голосов
/ 29 августа 2010

map ленив, а do не форсирует его. Если вы хотите принудительно вычислить ленивую последовательность, используйте doall или dorun.

(defn test-fn []
  (do
    (println "start")
    (dorun (map #(println (+ % 1)) '(1 2 3)))
    (println "done")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...