Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在clojure中漂亮地打印引用列表?_Clojure - Fatal编程技术网

如何在clojure中漂亮地打印引用列表?

如何在clojure中漂亮地打印引用列表?,clojure,Clojure,给出如下列表: (quote (do (println "Hello") (println "Goodbye"))) :如何将其转换为格式良好的字符串,并输出如下内容: (do (println "Hello") (println "Goodbye") ) 将clojure.pprint/write与clojure.pprint/code分派一起使用: (clojure.pprint/write '(do (println "Hello") (println "Goodbye"))

给出如下列表:

(quote (do (println "Hello") (println "Goodbye")))
:如何将其转换为格式良好的字符串,并输出如下内容:

(do
  (println "Hello") 
  (println "Goodbye")
)

clojure.pprint/write
clojure.pprint/code分派一起使用

(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!"))

要以字符串形式将调用封装在
(不带str…

中,作为
clojure.pprint
的一种性能更高的替代方案,您可能需要尝试Brandon Bloom的:


不幸的是,Fipp还不支持代码分派。

太棒了,我将尝试这个,并告诉您我在lighttable中尝试了这个,但在控制台上没有得到任何结果。我怎么才能让prn/print edn只返回一个字符串呢?我确实返回了(prn/print edn(p/parse string(str(quote(do)(println“Hello”)(println“bye”))))),但它返回nil,并且控制台中没有显示任何内容,这是因为混淆。我把某事弄混了。我修改了我的答案,希望你满意。酷,你不再需要clj重写了,顺便说一下:)它不支持Clojure代码。例如。let绑定将被打印一行,或者在打印之前将生成使用哈希标记定义的lambda。这同样适用于clojure.pprint<代码>(设[x1y2]:foo)由clojure.pprint和fipp打印在一行上
(让[a1b2c3…z26]:foo)
由两者打印,每个原子在单独的行上
#()
-Clojure阅读器实际上将风格函数转换为
fn*
表单,因此fipp和Clojure.pprint看到的是
fn*
表单(假设引用正确),当然这两个表单都能很好地处理这些问题(例如,漂亮的打印
(pprint'.(:foo))
打印出
(fn*[](:foo))
不管你是使用fipp还是clojure.pprint的
pprint
)。哦,你说得对,对不起——谢谢你纠正了我的错误。应该在阅读时给予适当的注意。
;; 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))