Add := digraph to D
Robert DaSilva
spunit262 at yahoo.com
Wed Jun 20 10:56:59 PDT 2012
On Wednesday, 20 June 2012 at 17:19:08 UTC, Jonathan M Davis
wrote:
> On Wednesday, June 20, 2012 16:36:47 ixid wrote:
>> Is there any reason not to add this so you can use foo := bar
>> as
>> a shorthand for auto foo = bar?
>
> Any proposed feature must have a solid use case and reason for
> being in the
> language. It needs to add real value. If you want a feature in
> the language,
> you need to show why it's truly worth having. This is
> especially true at this
> stage in the game. The language is supposed to be essentially
> stable at this
> point. We're ironing some stuff out still (primarily due to the
> compiler being
> behind the language definition), but we're not looking to make
> changes without
> good reason. And breaking changes _really_ need a good reason.
>
> As for your particular suggestion, I don't see how it adds
> anything but
> complication. So, you write
>
> foo := bar;
>
> instead of
>
> auto foo = bar
>
> _All_ it is is a syntactic change. It saves you a few
> characters. It adds _no_
> new functionality. It just adds one more thing that someone
> learning D has to
> learn and know. And it's not at all in line with how variable
> declarations
> normally work. What we currently have is very consistent. :=
> doesn't fit in
> with that at all. For all variable declarations, we have
>
> Type name = initializer;
>
> In some cases, the type is inferred, but then type specifier is
> used in its
> place:
>
> auto name = initializer;
> const name = initializer;
> immutable name = initializer;
> shared name = initializer;
> enum name = initializer;
>
> If we implemnted your suggestion, then we'd have
>
> name := initializer;
> auto name = initializer;
> const name = initializer;
> immutable name = initializer;
> shared name = initializer;
> enum name = initializer;
>
> It _only_ covers the auto case, and it doesn't fit in with the
> rest at all.
>
> Not to mention, there are some programming languages (e.g.
> Pascal) which use
> := for normal assignment, so it would be confusing for anyone
> familiar with
> those languages. I'm not aware of any language which
> specifically uses := for
> auto, just for assignment (though if the language doesn't
> require variable
> declarations, then all assignments are essentially the same as
> declarations
> with auto). So, what you're proposing (AFAIK) would be a new
> usage for :=,
> even if it's similar to what other languages have done.
>
> If you want something like this added, you need a compelling
> use case, and you
> don't seem to have one.
>
> - Jonathan M Davis
It's from Go, which has proper tuple syntax, it's main use is
that it allows
you to declare a new var and reuse an old one. So it would be
worth looking in to when we introduce a proper tuple syntax, but
not now.
>Unlike regular variable declarations, a short variable
>declaration may
>redeclare variables provided they were originally declared in
>the same block
>with the same type, and at least one of the non-blank variables
>is new. As a
>consequence, redeclaration can only appear in a multi-variable
>short
>declaration. Redeclaration does not introduce a new variable; it
>just assigns
>a new value to the original.
More information about the Digitalmars-d
mailing list