次のようなリストが与えられた場合:
(quote (do (println "Hello") (println "Goodbye")))
: これを適切にフォーマットされた文字列に変換して、次のような出力を得るにはどうすればよいですか:
(do
(println "Hello")
(println "Goodbye")
)
次のようなリストが与えられた場合:
(quote (do (println "Hello") (println "Goodbye")))
: これを適切にフォーマットされた文字列に変換して、次のような出力を得るにはどうすればよいですか:
(do
(println "Hello")
(println "Goodbye")
)
clojure.pprint/write
で使用clojure.pprint/code-dispatch
:
(clojure.pprint/write '(do (println "Hello") (println "Goodbye"))
:dispatch clojure.pprint/code-dispatch)
その少量のコードでは、改行は得られません。しかし、このような呼び出し
(clojure.pprint/write '(do (println "Hello") (println "Goodbye") (println "Hey, you left me out!"))
:dispatch clojure.pprint/code-dispatch)
戻り値
=> (do
(println "Hello")
(println "Goodbye")
(println "Hey, you left me out!"))
それを文字列としてキャッチするには、呼び出しをラップします(with-out-str ...)
よりもはるかにパフォーマンスの高い代替手段として、clojure.pprint
Brandon Bloom のfippを試してみてください。
;; add [fipp "0.4.0"] to :dependencies
(require '[fipp.edn :as fipp])
(fipp/pprint '(do (println :foo) (println :bar) (println :quux))
{:width 30}) ; force wrapping despite small size of data
;; printed output:
(do
(println :foo)
(println :bar)
(println :quux))
残念ながら、Fipp はまだコード ディスパッチをサポートしていません。