在clojure中定义我自己的reader宏

在clojure中定义我自己的reader宏,clojure,clojurescript,Clojure,Clojurescript,我想在clojure中定义我自己的reader宏: (read-string "ßfoo") => (some_func :foo) 可能吗?目前,Clojure不允许创建用户定义的读卡器宏。这在将来可能/可能不会改变。通过在类路径顶部的data\u readers.clj中创建读取器映射,可以创建带标记的文本 这必须在类路径顶部的data\u readers.clj中(通常是src目录) 这将进入reader-demo.core (defn some-func [arg] (s

我想在clojure中定义我自己的reader宏:

(read-string "ßfoo")
=> (some_func :foo)

可能吗?

目前,Clojure不允许创建用户定义的读卡器宏。这在将来可能/可能不会改变。

通过在类路径顶部的
data\u readers.clj
中创建读取器映射,可以创建带标记的文本

这必须在类路径顶部的
data\u readers.clj
中(通常是
src
目录)

这将进入reader-demo.core

(defn some-func
  [arg]
  (str "some-func invoked with " arg))

(defn read-fn
  [arg]
  (-> arg
      keyword
      some-func))
援引

#ß foo
会回来的

"some-func invoked with :foo"
这里描述了这种技术:

请注意,在实践中,您应该为标记的文本命名,因为所有未命名的文本都是为Clojure本身保留的

"some-func invoked with :foo"