You might consider creating an alias, e.g.

d(xs...) = Dict{Any, Any}(xs...)

d(:a=>1, :b=>2)

It's not as nice, but it's not awful either. You could also do

macro d(xs...)
  for x in xs
    @assert x.head == :(=>)
    isa(x.args[1], Symbol) && (x.args[1] = Expr(:quote, x.args[1]))
  end
  :(Dict{Any, Any}($(map(esc, xs)...)))
end

@d(a=>1, b=>2)

Saving on the colons might just be enough to make the lack of literal
syntax less painful.

On Wed, 2 Sep 2015 at 18:45 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 ?
>
>

Reply via email to