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.