Ответ 1
Печатное представление различных объектов, которое появляется в REPL, является произведением многомерного метода, называемого print-method
. Он находится в файле core_print.clj
в Clojure источниках, которые составляют часть того, что входит в пространство имен clojure.core
.
Проблема в том, что для объектов, реализующих clojure.lang.IDeref
- интерфейс Java для вещей deref
/@
может работать on - print-method
включает значение, стоящее за объектом в напечатанном представлении. Для этого ему нужно deref
объект, и хотя специальные условия сделаны для печати неудачных агентов и ожидающих фьючерсов, задержки всегда принудительно.
На самом деле я склонен считать это ошибкой или, в лучшем случае, ситуацией, нуждающейся в улучшении. В качестве обходного пути сейчас проявляйте особую осторожность, чтобы не печатать невыдержанные задержки.