

Rich Hickey on Clojure 1.4's Extensible Reader, ClojureScript - timmy-turner
http://www.infoq.com/interviews/hickey-clojure-reader

======
nickik
The Extensible Reader is really the next step in terms of a common extensible
data exchange format. Atm everybody builds this himself for his application,
this commes with alot of wheel reinvention. Make it extensible is the first
step to find out whats most used. People can find each other and creat common
abstractions.

------
gosub
I can't see the gain of:

    
    
        #uuid "550e8400-e29b-41d4-a716-446655440000"
    

over:

    
    
        (uuid "550e8400-e29b-41d4-a716-446655440000")
    

The reader already supports it, functions/macro are already namespaced and you
still have to parse it anyway.

~~~
zaph0d
Something like `(uuid "550e8400-e29b-41d4-a716-446655440000")` can't be
carried around as data whereas `#uuid "550e8400-e29b-41d4-a716-446655440000"`
can be.

Think about data interchange between Clojure & ClojureScript.

~~~
cemerick
Of course `(uuid "…")` can be carried around as data; it's a list containing a
symbol and a string, just like `#uuid "…"` is a tag and a string. The
difference is that the latter is evaluated at read-time with constrained
semantics, rather than requiring the full force and latitude of `eval`.

i.e. definitely helpful for data interchange between Clojure implementations
(and read-time shenanigans in general), and a big improvement over the depths
of #= and such.

~~~
zaph0d
+1.

------
fogus
A simple example reading a UUID of the form `#uuid
"550e8400-e29b-41d4-a716-446655440000"` is found at
[https://github.com/clojure/clojure/blob/master/src/clj/cloju...](https://github.com/clojure/clojure/blob/master/src/clj/clojure/uuid.clj)

A much more complex example reading a UTC instant in time like `#inst
"2010-11-12T13:14:15.666-06:00"` is found at
[https://github.com/clojure/clojure/blob/master/src/clj/cloju...](https://github.com/clojure/clojure/blob/master/src/clj/clojure/instant.clj)

