У меня возникли проблемы с пониманием того, как макрос delay
работает в Clojure. Кажется, он не делает того, что ожидает от него (то есть: откладывает оценку). Как вы можете видеть в этом примере кода:
; returns the current time
(defn get-timestamp [] (System/currentTimeMillis))
; var should contain the current timestamp after calling "force"
(def current-time (delay (get-timestamp)))
Однако вызов current-time
в REPL появляется, чтобы сразу оценить выражение, даже не используя макрос force
:
user=> current-time
#<[email protected]: 1276376485859>
user=> (force current-time)
1276376485859
Почему оценка get-timestamp
не была отложена до первого вызова force
?