Jump to page: 1 210  
Page
Thread overview
Just where has this language gone wrong?
Jul 19, 2012
Petr Janda
Jul 19, 2012
David
Jul 19, 2012
Petr Janda
Jul 19, 2012
q66
Jul 19, 2012
q66
Jul 19, 2012
Christophe Travert
Jul 19, 2012
Christophe Travert
Jul 19, 2012
Petr Janda
Jul 19, 2012
David
Jul 19, 2012
q66
Jul 19, 2012
q66
Jul 19, 2012
Christophe Travert
Jul 19, 2012
Petr Janda
Jul 19, 2012
Christophe Travert
Jul 19, 2012
Nick Sabalausky
Jul 19, 2012
Timon Gehr
Jul 19, 2012
Jacob Carlborg
Jul 19, 2012
Robik
Jul 19, 2012
Christophe Travert
Jul 19, 2012
Jacob Carlborg
Jul 19, 2012
Paulo Pinto
Jul 19, 2012
Nick Sabalausky
Jul 20, 2012
Jacob Carlborg
Jul 20, 2012
Paulo Pinto
Jul 20, 2012
Marco Leise
Jul 20, 2012
Jacob Carlborg
Jul 21, 2012
Marco Leise
Jul 21, 2012
Stuart
Jul 21, 2012
Nick Sabalausky
Jul 21, 2012
Nick Sabalausky
Jul 22, 2012
Jens Mueller
Jul 22, 2012
monarch_dodra
Jul 22, 2012
David Nadlinger
Jul 23, 2012
monarch_dodra
Jul 24, 2012
Jens Mueller
Jul 22, 2012
Paulo Pinto
Jul 22, 2012
Nick Sabalausky
Jul 22, 2012
Paulo Pinto
Jul 23, 2012
Nick Sabalausky
Jul 24, 2012
Nick Sabalausky
Jul 24, 2012
H. S. Teoh
Jul 24, 2012
Chris NS
Jul 24, 2012
Nick Sabalausky
Jul 24, 2012
Era Scarecrow
Jul 24, 2012
Era Scarecrow
Jul 25, 2012
Chris NS
Jul 25, 2012
Nick Sabalausky
Jul 25, 2012
Stuart
Jul 23, 2012
Stuart
Jul 23, 2012
Paulo Pinto
Jul 23, 2012
Stuart
Jul 23, 2012
Stuart
Jul 23, 2012
Simen Kjaeraas
Jul 24, 2012
Simen Kjaeraas
Jul 24, 2012
Jonathan M Davis
Jul 24, 2012
Simen Kjaeraas
Jul 24, 2012
Stuart
Jul 24, 2012
Regan Heath
Jul 24, 2012
Stuart
Jul 24, 2012
H. S. Teoh
Jul 24, 2012
Andrej Mitrovic
Jul 24, 2012
Simen Kjaeraas
Jul 24, 2012
Ali Çehreli
Jul 24, 2012
Russel Winder
Jul 24, 2012
Simen Kjaeraas
Jul 23, 2012
Nick Sabalausky
Jul 23, 2012
Nick Sabalausky
Jul 24, 2012
Paulo Pinto
Jul 24, 2012
Paulo Pinto
Jul 19, 2012
David Piepgrass
Jul 19, 2012
Nick Sabalausky
Jul 20, 2012
Faux Amis
Jul 20, 2012
Damian
Jul 20, 2012
Jeff Nowakowski
Jul 20, 2012
Jacob Carlborg
Jul 20, 2012
renoX
Jul 20, 2012
Era Scarecrow
Jul 19, 2012
Timon Gehr
Jul 19, 2012
Petr Janda
Jul 19, 2012
Timon Gehr
Jul 19, 2012
Brad Anderson
Jul 19, 2012
Timon Gehr
Jul 19, 2012
Brad Anderson
Jul 19, 2012
Ali Çehreli
Jul 19, 2012
Jacob Carlborg
Jul 19, 2012
David Nadlinger
Jul 19, 2012
Bernard Helyer
Just where has this thread gone wrong? (n/t)
Jul 19, 2012
FeepingCreature
Jul 20, 2012
Chad J
July 19, 2012
Hi,

I'm an occasional lurker on the D forums just to see where the language is going,but I'm a little puzzled. In another thread I found this code

auto r = [5, 3, 5, 6, 8].sort.uniq.map!(x => x.to!string);

I don't understand whats going on here. Int array is getting sorted, then Uniqued, then what? What type is x? What kind of operator is =>, why is x.to!string allowed template specialization should say x.to!(string), which leads me to think that there are multiple syntaxes for things(why I hate dynamic languages, love compiled)

On another note, (copied from wikipedia)

foreach(item; set) {
  // do something to item
}

what's with the lax syntax being allowed? Shouldn't it be at least specified "auto item"?

I'm sorry I don't mean to be a criticizer, but it seems to me that D is trying to be a dynamic-like compiled language way too hard.

July 19, 2012
Am 19.07.2012 16:21, schrieb Petr Janda:
> Hi,
>
> I'm an occasional lurker on the D forums just to see where the language
> is going,but I'm a little puzzled. In another thread I found this code
>
> auto r = [5, 3, 5, 6, 8].sort.uniq.map!(x => x.to!string);
>
> I don't understand whats going on here. Int array is getting sorted,
> then Uniqued, then what? What type is x? What kind of operator is =>,
> why is x.to!string allowed template specialization should say
> x.to!(string), which leads me to think that there are multiple syntaxes
> for things(why I hate dynamic languages, love compiled)
>
> On another note, (copied from wikipedia)
>
> foreach(item; set) {
>    // do something to item
> }
>
> what's with the lax syntax being allowed? Shouldn't it be at least
> specified "auto item"?
>
> I'm sorry I don't mean to be a criticizer, but it seems to me that D is
> trying to be a dynamic-like compiled language way too hard.
>

=> → New Lambda Syntax
.sort.uniq.map(…) → UFCS (Uniform Function Call Syntax, iirc)

Array gets sorted, then doubles are removed (uniq) and then everything is converted to a string (map).

Everything was recently introduced around 2.059.

July 19, 2012
On Thursday, 19 July 2012 at 14:21:47 UTC, Petr Janda wrote:
> Hi,
>
> I'm an occasional lurker on the D forums just to see where the language is going,but I'm a little puzzled. In another thread I found this code
>
> auto r = [5, 3, 5, 6, 8].sort.uniq.map!(x => x.to!string);
>
> I don't understand whats going on here. Int array is getting sorted, then Uniqued, then what? What type is x? What kind of operator is =>, why is x.to!string allowed template specialization should say x.to!(string), which leads me to think that there are multiple syntaxes for things(why I hate dynamic languages, love compiled)
>
> On another note, (copied from wikipedia)
>
> foreach(item; set) {
>   // do something to item
> }
>
> what's with the lax syntax being allowed? Shouldn't it be at least specified "auto item"?
>
> I'm sorry I don't mean to be a criticizer, but it seems to me that D is trying to be a dynamic-like compiled language way too hard.

(arguments) => result-expression is a lambda expression; sort of shorthand for (arguments) { return result-expression; } anonymous function. x.to!string thingy is the new UFCS stuff which basically allows you to transform any foo(x, y, z) to x.foo(y, z) (so instead of calling a(b(c(d(e(f))))) you can just call a.b.c.d.e.f())

dynamic languages are awesome, they have their pros and cons, for some things they're way better than static languages but for other things static will fit better.
July 19, 2012
btw - as for your complains - I would blame poor D documentation more than the feature itself; as for "what type is x", it's inferred from the prototype of the called function; type inference is a standard feature in many static languages.
July 19, 2012
On Thursday, 19 July 2012 at 14:21:47 UTC, Petr Janda wrote:
> Hi,

Hi

> I'm an occasional lurker on the D forums just to see where the language is going,but I'm a little puzzled. In another thread I found this code
>
> auto r = [5, 3, 5, 6, 8].sort.uniq.map!(x => x.to!string);

Here's list what happens:

 1) Array gets sorted
 2) Duplicate elements gets removed (only unique stay)
 3) Then it get's maped by delegate. It converts numbers into strings.
    `r` variable will be ["3", "5", "6", "8"]

> What type is x?
Type of x is inferred.

> What kind of operator is =>
Syntatic sugar for delegates.

> On another note, (copied from wikipedia)
>
> foreach(item; set) {
>   // do something to item
> }

Item type is inferred from `set`, it's just syntactic sugar. Of course you can use `auto` but you don't have to.
July 19, 2012
> Array gets sorted, then doubles are removed (uniq) and then everything is converted to a string (map).
>
> Everything was recently introduced around 2.059.

Ok, but what is map!(). What's the point of the exclamation mark, is it a template specialization?
July 19, 2012
"q66" , dans le message (digitalmars.D:172716), a écrit :
> (so instead of calling a(b(c(d(e(f))))) you can just call a.b.c.d.e.f())

rather f.e.d.c.b.a, if you omit the empty parenthesis after each letter (but f).
July 19, 2012
On 19-07-2012 16:31, Petr Janda wrote:
>> Array gets sorted, then doubles are removed (uniq) and then everything
>> is converted to a string (map).
>>
>> Everything was recently introduced around 2.059.
>
> Ok, but what is map!(). What's the point of the exclamation mark, is it
> a template specialization?

It means template instantiation. The parameter list following the exclamation mark are passed to the template, while the second parameter list contains the normal runtime arguments.

-- 
Alex Rønne Petersen
alex@lycus.org
http://lycus.org
July 19, 2012
On Thursday, 19 July 2012 at 14:31:41 UTC, Petr Janda wrote:
>> Array gets sorted, then doubles are removed (uniq) and then everything is converted to a string (map).
>>
>> Everything was recently introduced around 2.059.
>
> Ok, but what is map!(). What's the point of the exclamation mark, is it a template specialization?

stuff after ! specifies template arguments, in this case a predicate; "map" is a standard function in many languages; what it does basically is to go over an iterable object, apply the predicate function given in the template argument to each element and returns a new iterable containing the results of the predicate call on each element.
July 19, 2012
On Thursday, 19 July 2012 at 14:33:49 UTC, q66 wrote:
> On Thursday, 19 July 2012 at 14:31:41 UTC, Petr Janda wrote:
>>> Array gets sorted, then doubles are removed (uniq) and then everything is converted to a string (map).
>>>
>>> Everything was recently introduced around 2.059.
>>
>> Ok, but what is map!(). What's the point of the exclamation mark, is it a template specialization?
>
> stuff after ! specifies template arguments, in this case a predicate; "map" is a standard function in many languages; what it does basically is to go over an iterable object, apply the predicate function given in the template argument to each element and returns a new iterable containing the results of the predicate call on each element.

for example, auto x = [ 5, 10, 15, 20 ]; assert(map!(x => x + 1)(x) == [ 6, 11, 16, 21 ])
« First   ‹ Prev
1 2 3 4 5 6 7 8 9 10