3

有没有办法将 Clojure 表单转换为字符串?例如转换:

(and (f 1) (g 3))

至:

"(and (f 1) (g 3))"
4

3 回答 3

8
=> (defmacro string-it [x] (str x))
#'user/string-it
=> (string-it (+ 1 2))
"(+ 1 2)"
于 2013-02-21T13:20:42.197 回答
3

你可以这样做:

(str '(and (f 1) (g 3)))

编辑

如果您不熟悉它,'("quote") 字符是一个阅读器宏字符 ( more ),它会转义代码 - 即阻止它被评估。

您还可以设置一个变量:

(def x '(and (f 1) (g 3)))
(str x)

然后如果你想运行代码,你可以评估它。

于 2013-02-21T13:16:21.827 回答
3

或者,如果您事先不知道表格,您可以这样做,

(defmacro to-str [f]
  (str f))

(to-str (and (f 1) (g 3)))

并得到,

"(and (f 1) (g 3))"
于 2013-02-21T13:23:15.973 回答