[erlang-questions] json_to_term EEP
David Mercer
dmercer@REDACTED
Mon Aug 4 19:09:36 CEST 2008
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@REDACTED]
> Sent: Sunday, August 03, 2008 21:24
> To: dmercer@REDACTED
> 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.
More information about the erlang-questions
mailing list