バイナリ ツリーを出力しようとしていますが、Clojure がシーケンスを正しく出力するのに苦労しています。
'(1 2 3)
たとえば、ノードのリストがあります。
各反復で、各要素の前後に多数のスペースを含むノードを出力したいと考えています。
(defn spaces [n]
(apply str (repeat n " ")))
すごい、これはうまくいくようです。
それで、私がnodes
'(:a :b :c)
1行に印刷したいリストを持っているとしましょう。
(println (map #(str (spaces before) % (spaces (dec before))) nodes))
私はアイテムのリストを持っています。マップを使用して、文字列オブジェクトのリストを取得します。よし、印刷できるぞ!
しかし、これは私にこれを与えます:
(clojure.lang.LazySeq@d0b37c31 clojure.lang.LazySeq@105879a9 clojure.lang.LazySeq@8de18242)
そこで、遅延シーケンスを印刷する方法をグーグル検索し、print-str
コマンドを使用するようになりました。ドキュメントによると、これは文字列に出力され、返されます。
(println (print-str (map #(str (spaces before) % (spaces (dec before))) nodes)))
しかし、これは私にこれを与えます:
(clojure.lang.LazySeq@d0b37c31 clojure.lang.LazySeq@105879a9 clojure.lang.LazySeq@8de18242)
変わらない..うーん。どんな助けでも大歓迎です。