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