The user-provided examples and comments at ClojureDocs.org are not official
Clojure documentation, but in many cases contain useful additional info.

I have just added examples to clojure.core/pr similar to those that
motivated this thread, and Timothy Baldridge's suggestion to use transit in
cases where such Clojure data may be present.

http://clojuredocs.org/clojure.core/pr

http://clojuredocs.org/clojure.edn/read

Andy


On Fri, Aug 5, 2016 at 6:42 PM, Blake Miller <blak3mil...@gmail.com> wrote:

> I agree with Herwig in principal ... even though EDN is not meant to cover
> the whole set of possible pure Clojure data, if it can be made to cover
> more (all other things being equal) that would be a Good Thing.
>
> I think it would be possible to fix these edge cases with reader macro
> dispatches without breaking compatibility. The major snag though is
> that performance would suffer ... every single keyword or symbol being
> `pr`d would have to be tested, even those in the vast majority that don't
> need to be emitted in any special way. So my conclusion is it's not worth
> trying ...
>
> It sucks that the docstring for pr https://github.com/clojure/
> clojure/blob/clojure-1.7.0/src/clj/clojure/core.clj#L3552-L3555 fails to
> mention that the function may succeed and produce a string that the reader
> will barf on, but I think we're pretty much stuck with it.
>
> For posterity: I switched to using Transit for the Clojure(Script) app
> that had me run across this issue.
>
> On Thu, Aug 4, 2016 at 2:23 PM, Herwig Hochleitner <hhochleit...@gmail.com
> > wrote:
>
>> 2016-08-04 13:56 GMT+02:00 Timothy Baldridge <tbaldri...@gmail.com>:
>>
>>> The problem is that many do not understand that Clojure data is a
>>> superset of EDN. The two were never meant to be completely compatible.
>>> There are many things, especially when dealing with keywords and symbols,
>>> where its possible to have data that doesn't properly round-trip.
>>>
>>
>> Then fressian and transit are supersets of edn as well. Are those, at
>> least, meant to be the same set as clojure data?
>> Also, reader tags are a fantastic opportunity to make arbitrary data
>> round-trippable.
>>
>> An added problem when dealing with EDN is that there is only really one
>>> or two languages that properly parse it: Clojure and Clojurescript. So it's
>>> also a poor choice to use in cases where you desire any sort of interop.
>>>
>>
>> There many edn libraries for various languages: https://github.com/
>> edn-format/edn/wiki/Implementations
>> It is true, that there is a lack of compatibility, especially in the
>> handling of symbols and keywords and the community is hurting for it (I
>> remember a couple of tedious discussions on the matter)
>>
>> see http://dev.clojure.org/jira/browse/CLJ-1527 https://gith
>> ub.com/edn-format/edn/issues/67 ...
>>
>> Add on top of all that that EDN parsing is really slow compared to other
>>> approaches, and you have a lot of compelling reasons to, as Herwig put it,
>>> "abandon edn, except for hand-written data".
>>>
>>
>> My view is, that those reasons should be eliminated, starting with
>> interoperability concerns. I still think edn is a fantastic idea and to me
>> it still holds the promise of being a replacement for json and xml, but
>> only if we can get our act together and develop it towards that goal.
>>
>> Please note, that my "except for hand-written data" was meant to be
>> hyperbole. Every data is eventually machine-written.
>>
>> Abandoning edn would send a fatal signal not just to people in the
>> community. Especially if we let it slowly die instead of declaring it a
>> failed experiment in data exchange.
>>
>> Imagine if pr wouldn't handle embedded " quotes in strings and the
>> inofficial recommendation would be to just avoid that use case or use a
>> different encoding.
>>
>> And yes, the original problem that caused the creation of Transit was
>>> "how do we get data from language A to language B while still staying fast,
>>> not implementing a ton of code, and keeping rich data (dates should be
>>> dates, not strings)."
>>>
>>
>> I like the idea of having various encodings for different uses, but we
>> should strife towards compatibility.
>>
>> --
>> 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 a topic in the
>> Google Groups "Clojure" group.
>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>> pic/clojure/Rc_b4_Da-KU/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> 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.
>

-- 
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