digitalmars.D - The Language I Wish Go Was
- Walter Bright (2/2) Oct 21 2010 http://news.ycombinator.com/item?id=1814887
- Juanjo Alvarez (6/8) Oct 21 2010 I always enjoy a good rant about some language. When I'm intrigued
- bearophile (10/12) Oct 21 2010 I use named arguments every day in Python, they make the code more reada...
- Juanjo Alvarez (14/15) Oct 21 2010 unfinished and buggy, so adding even more stuff is not a good idea.
- bearophile (27/32) Oct 21 2010 In D2 there are even typesafe Variadic Functions for dynamic arrays and ...
http://news.ycombinator.com/item?id=1814887 Some commentary on D there.
Oct 21 2010
On Thu, 21 Oct 2010 10:51:14 -0700, Walter Bright <newshound2 digitalmars.com> wrote:http://news.ycombinator.com/item?id=1814887Some commentary on D there.I always enjoy a good rant about some language. When I'm intrigued by some language rants are the first things I google. I wish Go, sorry, D had named arguments too. Its a simple feature that nuke a trunkload of function overloading.
Oct 21 2010
Juanjo Alvarez:I wish Go, sorry, D had named arguments too. Its a simple feature that nuke a trunkload of function overloading.I use named arguments every day in Python, they make the code more readable and safer at the calling point, because there's less risk of passing wrong data. And recently I have seen that named arguments are widely used in SPARL Ada too, to make code less bug-prone. If a feature is seen as good in both Python and SPARK (that are two very different language), then it's good. This is the syntax in Ada (and SPARK): http://en.wikibooks.org/wiki/Ada_Programming/Subprograms#Named_parameters http://msdn.microsoft.com/en-us/library/dd264739.aspx On the other hand, currently there are many D2 features that are unfinished and buggy, so adding even more stuff is not a good idea. And I think named arguments are a purely additive change. So Walter may add them later when the current features are implemented well enough. Currently it's much more important to focus on eventually needed non-additive changes instead. Bye, bearophile
Oct 21 2010
On Thu, 21 Oct 2010 15:45:55 -0400, bearophile <bearophileHUGS lycos.com> wrote:On the other hand, currently there are many D2 features that areunfinished and buggy, so adding even more stuff is not a good idea. And I think named arguments are a purely additive change. So Walter may add them later when the current features are implemented well enough. Currently it's much more important to focus on eventually needed non-additive changes instead. Very true. I also use named arguments constantly in Python. Since I'm not the only one that would like to have it in D 2.1 I'll go into gredy mode and add that expanding a dictionary as named arguments to a function is pretty useful too, but since in D's hashes the values must be of the same type for a declared hash it would be less useful, except for Variant[string] hashes maybe, which is a little convoluted.
Oct 21 2010
Juanjo Alvarez:expanding a dictionary as named arguments to a function is pretty useful too, but since in D's hashes the values must be of the same type for a declared hash it would be less useful, except for Variant[string] hashes maybe, which is a little convoluted.In D2 there are even typesafe Variadic Functions for dynamic arrays and class objects: http://www.digitalmars.com/d/2.0/function.html An example: class Foo { int x; string s; this(int x_, string s_) { this.x = x_; this.s = s_; } } void test1(int[] array ...) {} void test2(int x, Foo f ...) {} void main() { test1(4, 5, 6); test2(1, 4, "text"); } So far typesafe variadic functions for class objects is an useless feature for me. Once named arguments are present, typesafe variadic functions for associative arrays may look like: void test3a(int[string] aa ...) {} void test3b(Variant[string] aa ...) {} You may call them like this: test3a(x: 1, y: 2, good: 3); test3b(x: 1, y: 2, good: "right"); Bye, bearophile
Oct 21 2010