Я звоню clojure.core / time, который задокументирован как «Оценивает expr и печатает время, которое потребовалось. Возвращает значение expr»
Например:
(time (expensive))
Макрорасширениеон показывает, что он хранит значение в виде let, поэтому после вывода времени он должен немедленно вернуться со значением в выражении let.
Однако, когда я выполняю вызов с дорогими вычислениями, я вижу задержку изатем верните время назад, но затем придется ждать значительного времени (иногда +10 секунд или более), чтобы появился результат.
Может кто-нибудь объяснить, что здесь происходит?
PS: Это использует clojure 1.3.0, если это что-то меняет.