clojure - How do I use with-out-str with collections? -
i can use with-out-str string value (doc func).
=> (with-out-str (doc first)) "-------------------------\nclojure.core/first\n([coll])\n returns first item in collection. calls seq on its\n argument. if coll nil, returns nil.\n" however, if try same thing collection of functions, can return empty string each:
=> (map #(with-out-str (doc %)) [first rest]) ("" "") where going wrong here?
unfortunately doc macro, , such not first class citizen in clojure because cannot use higher order function.
user> (doc doc) ------------------------- clojure.repl/doc ([name]) macro prints documentation var or special form given name what seeing output of looking documentation % twice.
user> (doc %) nil user> (with-out-str (doc %)) "" because call doc has finished running during macro-expansion-time, before call map runs (at run-time). can doc string directly metadata on var containing functions
user> (map #(:doc (meta (resolve %))) '[first rest]) ("returns first item in collection. calls seq on its\n argument. if coll nil, returns nil." "returns possibly empty seq of items after first. calls seq on its\n argument.")
Comments
Post a Comment