« Return to Thread: json_to_term EEP

Re: json_to_term EEP

by David Mercer-4 :: Rate this Message:

Reply to Author | View in Thread

Thanks for the outstanding explanation.

If the Erlang community decides to represent strings as UTF-8-encoded
binaries, we should probably add I/O support for that...

Cheers,

David

> -----Original Message-----
> From: Richard A. O'Keefe [mailto:ok@...]
> Sent: Sunday, August 03, 2008 21:24
> To: dmercer@...
> Cc: 'Erlang Questions'
> Subject: Re: [erlang-questions] json_to_term EEP
>
>
> On 2 Aug 2008, at 2:21 am, David Mercer wrote:
>
> > Does this signal that the Erlang community is moving away from
> > strings-as-lists to strings-as-binaries?
>
> Basically, I looked at what other people were doing with JSON->Erlang
> conversion, and strings-as-binaries seemed to be the most popular
> choice.
>
> Strings as binaries have some advantages.
>
> (1) They are MUCH closer in spirit to what people expect strings to
>      be.  I've lost count of the number of times people have said in
>      this mailing list "Erlang is no XXXXXXX good because it doesn't
>      have strings."  I'm sick of explaining why this is wrong.
>
> (2) They _are_ more compact than lists, and if you want to pump data
>      _through_ Erlang, reducing space turnover is a help.
>      This is why I think strings-as-binaries with labels-as-atoms is
>      a good balance; the part you expect to look inside using Erlang
>      is easy to look at, the rest is cheap to hold and pass on.
>
> (3) They offer constant-time slicing.
>
> With the addition of <<"...">> syntax to Erlang they are almost
> readable.
>
> With Unicode, the major snag is that lists can represent one Unicode
> character per element, whereas binary matching counts bytes.  Regular
> expressions are coming, and if they can handle UTF-8 binaries we need
> not worry too much about counting bytes.
>
> >  Should we have an option in the
> > JSON functionality to return keys and values as strings-as-lists?
>
> This now leads us to the reason WHY other people are mapping JSON
> strings to Erlang binaries.
> "ABC"
> is a legal JSON string.
> [65,66,67]
> is a legal JSON "array".  If we turned JSON strings into Erlang
> strings, how would we tell them from "arrays"?  At least one of them
> would have to be flagged somehow.
>
> It might be pleasantly symmetric to have
> [array,65,66,67]
> [string,65,66,67]
> [object,......]
> The thing is, you can't -just- say "let's have strings as lists",
> you have to do something different with arrays/lists as well.
>
> This really doesn't make a good default.

_______________________________________________
erlang-questions mailing list
erlang-questions@...
http://www.erlang.org/mailman/listinfo/erlang-questions

 « Return to Thread: json_to_term EEP