Thanks, wasn't familiar (and this was clashing in my head with Datomic 
Ions). Sounds to me like you should make a new tagged literal edn type like 
#ion/symbol rather than trying to force this into edn symbols, which do not 
support the semantics you want. Printing as (keyword "foo bar") means you 
would require evaluation, which edn does not do on read and adds all sorts 
of constraints on how you could use this. By contrast, using a tagged 
literal is a read-time feature, fully round-trippable and not even 
necessarily requiring intermediaries to understand the tag.

On Thursday, August 9, 2018 at 11:27:35 PM UTC-5, Didier wrote:
>
> Ion is a data serialization format from Amazon 
> http://amzn.github.io/ion-docs/
>
> One lf its supported data type is symbol, defined as: Interned, Unicode 
> symbolic atoms (aka identifiers)
>
> I interact with systems that interchange their data using ION. My systems 
> use EDN though internally. Thus I need to convert from ION to EDN and back 
> in a lossless manner.
>
> If you give me ION with symbols in them, and I convert them to EDN, I need 
> be able to go back to the exact same ION symbol when converting my EDN back 
> to ION.
>
> If I make symbols string, I lose the type info, and would convert it back 
> to an ION string. This wouod break my clients.
>
> I thought I could get away not having to build a custom representation for 
> them in Clojure and EDN, and piggyback on keywords.
>
> It now seems to me like I can still piggyback on keywords when in Clojure, 
> since `keyword` and clojure.lang.Keyword appear to support full unicode.
>
> But it seems EDN does not support full unicode serialization for them. So 
> I've extended the edn serialization and deserialization so that it does.
>
> I did so by overriding print-method for keywords so that when it prints in 
> an unreadable way, it instead outputs a custom literal #myproject/keyword 
> "namespace/name". And I've added a reader for this which uses keyword to 
> get a Clojure keyword back.
>
> Does any of this seem unsound to anyone?
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to