11

I would like to define my own reader macro in clojure:

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

Is it possible?

2 Answers 2

13

It is possible to create tagged literals by having a reader map in data_readers.clj at the top of your classpath.

This must be in data_readers.clj at the top of your classpath (usually src directory).

{ß reader-demo.core/read-fn} 

This goes into reader-demo.core

(defn some-func [arg] (str "some-func invoked with " arg)) (defn read-fn [arg] (-> arg keyword some-func)) 

Invoking

#ß foo 

will return

"some-func invoked with :foo" 

This technique is described here: The reader: Tagged literals

Notice that in practice you should namespace your tagged literals as all non-namespaced ones are reserved for Clojure itself.

Sign up to request clarification or add additional context in comments.

Comments

0

Currently, Clojure doesn't allow to create user defined reader macros. This might/might not change in the future.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.