使用\~I
和\~_
等在许多情况下失败,最简单的一个是
Clojure 1.6.0和1.5.1
user=> (clojure.pprint/cl-format true "~I") ClassCastException java.io.PrintWriter不能转换为java.util.concurrent.Future clojure.core/deref-future (core.clj:2180) user=> (clojure.pprint/cl-format nil "~I") ClassCastException java.io.StringWriter不能转换为java.util.concurrent.Future clojure.core/deref-future (core.clj:2180) user=> (clojure.pprint/cl-format nil "~_") ClassCastException java.io.StringWriter不能转换为java.util.concurrent.Future clojure.core/deref-future (core.clj:2180)
Clojure 1.4.0
user=> (clojure.pprint/cl-format true "~I") ClassCastException java.io.OutputStreamWriter不能转换为clojure.lang.IDeref clojure.core/deref (core.clj:2080) user=> (clojure.pprint/cl-format nil "~I") ClassCastException java.io.StringWriter不能转换为clojure.lang.IDeref clojure.core/deref (core.clj:2080) user=> (clojure.pprint/cl-format nil "~_") ClassCastException java.io.StringWriter不能转换为clojure.lang.IDeref clojure.core/deref (core.clj:2080)
在其他实现中这些可以工作,例如clisp,在这些简单情况下创建空输出
> (format t "~I") NIL > (format nil "~I") "" > (format nil "~_") ""