[erlang-questions] [ANN] Erlson - dynamic name-value dictionary data type and syntax

Rapsey rapsey@REDACTED
Mon Aug 29 07:05:19 CEST 2011


Looks great. Glancing at the code, erlson:from_proplist if your proplist key
is not an atom will not work, or will it? It would be nice if it
automatically converted from lists and binaries.


Sergej

On Mon, Aug 29, 2011 at 6:50 AM, Anton Lavrik <alavrik@REDACTED> wrote:

> Hi list,
>
> It is my pleasure to announce Erlson - a proof of concept
> implementation of dynamic dictionary data type. It can be best
> described by examples:
>
>    X = #{},  % create an empty dictionary
>
>    D = #{foo = 1, bar = "abc", fum},  % associate fields 'foo' with
> 1, 'bar' with "abc" and 'fum' with 'true'
>
>    1 = D.foo,  % access dictionary element
>
>    D1 = D#{baz = #{fum = #{i = 0}}},    % add nested dictionaries to
> dictionary D
>
>    0 = D1.baz.fum.i,     % access elements of the nested dictionary
>
>    D2 = D1#{baz.fum.i = 100, baz.fum.j = "new nested value"}. %
> modify elements of the nested dictionary
>    ...
>
>    erlson:to_json(D2).   % convert Erlson dictionary to JSON iolist()
>
>    D = erlson:from_json(Json).  % create Erlson dictionary from JSON
> iolist()
>    ...
>
>    D = erlson:from_proplist(L).     % create Erlson dictionary from a
> proplist
>
>    D = erlson:from_nested_proplist(L).  % create nested Erlson
> dictionary from a nested proplist
>
>
> Erlson implementation is fully working and includes syntax support,
> runtime library and rebar packaging. The source code is available on
> GitHub: https://github.com/alavrik/erlson
>
> Internally, Erlson dictionaries are represented as orddicts, i.e.
> ordered lists of {atom(), any()} pairs. This way, they can be easily
> printed, manipulated and  explored using conventional methods. For
> example, using the standard "orddict" and "proplists" libraries. It is
> also possible to define types for Erlson dictionaries and have them
> checked by Dialyzer.
>
> Erlson dictionary syntax can be used in both .erl modules and Erlang
> shell. Its implementation is based on a customized version of
> "erl_parse.yrl", which extends several grammar rules and overloads
> existing syntax elements used by Erlang records. Because there was no
> need to introduce new syntax elements, the implementation turned out
> to be quite simple.
>
> There is a catch, though. The current Erlson implementation is based
> on the original "erl_parse.yrl" from R14B03 release. This makes Erlson
> incompatible with other Erlang releases if they have a different
> version of "erl_parse.yrl".
>
> Although it would be easy to provide Erlson-enabled "erl_parse.yrl"
> version for every Erlang release, I was thinking about of a less hacky
> and more reliable solution. And this brings me to the question:
>
> Would it be useful if Erlson or some subset/superset of it became a
> part of the Erlang language? What do you think?
>
>
> Anton
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20110829/0bed7ce6/attachment.htm>


More information about the erlang-questions mailing list