If I recall correctly, the two sets of ASCII bracketing operators ([] and
{}) were deemed to be more usefully employed for arrays; apparently, arrays
are used more often than dictionaries in Julia. However, I also recall the
suggestion that some other kind of bracketing operators -- maybe non-ASCII
unicode ones, or double up operators such as [[ ]] or <| |> or somesuch --
could be used for dictionaries.On the other hand: In many cases where one would naturally use arrays, using iterators is more efficient. Similarly, instead of using dictionaries, using arrays of pairs is often possible. -erik On Wed, Sep 2, 2015 at 1:29 PM, Michael Francis <[email protected]> wrote: > > The arguments given in the thread that Dict 'isn't special' should also > also apply to Vector and Array, I presume nobody wants to do away with > literal syntax for them as well? > > There are many times when having a simple terse native (code editor aware) > literal syntax for structured data is very useful (in the same way that it > is useful for vectors and arrays) and I second what David is saying, it > feel like I'm back writing C++/C#/Java et al. > > Using macros works, but everybody is going to have their own so there will > be no consistency across the code base. Dict(...) works without the types > so I guess that is the best of a bad bunch. > > On Wednesday, September 2, 2015 at 1:07:59 PM UTC-4, Isaiah wrote: >> >> This issue was raised here: >> https://github.com/JuliaLang/julia/issues/6739#issuecomment-120149597 >> >> I believe the consensus was that nice JSON input syntax could be handled >> with a macro. >> >> Also, once the "[ a=>b, ...]" syntax deprecation goes away, I believe >> this: >> >> [ :col => "l1", :col => "l2", ... ] >> >> will simply give you an array of Pair objects, which could be translated >> to unitary Dicts by JSON. >> >> (FWIW, it is not necessary to specify the argument types to Dict) >> >> On Wed, Sep 2, 2015 at 12:45 PM, Michael Francis <[email protected]> >> wrote: >> >>> With the change to 0.4 happening soon I'm finding the the new Dict >>> syntax in 0.4 (removal of {}, []) is extremely verbose. >>> >>> I find myself interfacing with JSON APIs frequently, for example a >>> configuration dictionary : >>> >>> data = { >>> :displayrows => 20, >>> :cols => [ >>> { :col => "l1" }, >>> { :col => "l2" }, >>> { :col => "l3" }, >>> { :col => "num", :display => true }, >>> { :col => "sum", :display => true, :conf => { :style >>> => 1, :func => { :method => "sum", :col => "num" } } } >>> ] >>> ... # Lots more >>> } >>> >>> becomes - >>> >>> data = Dict{Symbol,Any}( >>> :displayrows => 20, >>> :cols => [ >>> Dict{Symbol,Any}( :col => "l1" ), >>> Dict{Symbol,Any}( :col => "l2" ), >>> Dict{Symbol,Any}( :col => "l3" ), >>> Dict{Symbol,Any}( :col => "num", :display => true ), >>> Dict{Symbol,Any}( :col => "sum", :display => true, :conf >>> => Dict{Symbol,Any}( :style => 1, >>> :func >>> => Dict{Symbol,Any}( :method => "sum", :col => "num" ) ) ) >>> ] >>> ... # Lots more >>> ) >>> >>> This feels like asking a person using arrays to write the following >>> >>> Array{Int64,2}( Vector{Int64}( 1,2,3), Vector{Int64}( 4,5,6) ) >>> >>> vs >>> >>> [ [ 1, 2, 3] [ 4,5,6 ] ] >>> >>> Can we please reconsider ? >>> >>> >> -- Erik Schnetter <[email protected]> http://www.perimeterinstitute.ca/personal/eschnetter/
