Relevant Julia issues:

* Reintroduce concise syntax for Dict construction? #12930
<https://github.com/JuliaLang/julia/issues/12930>
* Dict syntax is getting me down #6739
<https://github.com/JuliaLang/julia/issues/6739>

On Thu, Sep 3, 2015 at 7:38 AM, Jeff Bezanson <[email protected]>
wrote:

> There is no need to write the type over and over again. You can say
>
> const D = Dict{Symbol, Any}
>
> D(:a => "", :b => 0, ...)
>
> The old syntax for this was
>
> (Symbol=>Any)[:a => "", :b => 0, ...]
>
> but there was no way to abstract over the type part, `(Symbol=>Any)`,
> so you really did have to write the types over and over again. The `{
> }` syntax only constructed dicts of exactly one type, Dict{Any,Any}.
> Do we really want to use an entire set of brackets for exactly one
> very-loosely-typed kind of dict?
>
> So in other words there was a "syntax cliff", where you could start
> with a bunch of nested `{ }`, but then if you realized every key was
> the same type you would have to rewrite everything, switching `{ }` to
> `[ ]` and inserting `(T=>S)` in front. Now you can just change the
> definition of `const D = ...` in one place.
>
> On Thu, Sep 3, 2015 at 10:12 AM, Mike Nolta <[email protected]> wrote:
> > I also think ditching {} for dicts wasn't a great idea.
> >
> > -Mike
> >
> > On Thu, Sep 3, 2015 at 9:36 AM, Jonathan Malmaud <[email protected]>
> wrote:
> >> I agree that syntactic sugar for Dict literal construction would be
> >> appreciated. There were good reasons for removing the previous syntax,
> but I
> >> think it should be possible to find something more terse than the status
> >> quo.
> >>
> >> On Wednesday, September 2, 2015 at 12:45:08 PM UTC-4, Michael Francis
> 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 ?
> >>>
> >>
>

Reply via email to