▲ | schveiguy a day ago | |
> Why "a" `a` is a parameter in the lambda function `a => a.idup`. > Why "map!" This is definitely something that can trip up new users or casual users. D does not use <> for template/generic instantiation, we use !. So `map!(a => a.idup)` means, instantiate the map template with this lambda. What map is doing is transforming each element of a range into something else using a transformation function (this should be familiar I think?) FWIW, I've been using D for nearly 20 years, and the template instantiation syntax is one of those things that is so much better, but you have to experience it to understand. > "idup" seems arbitrary Yes, but a lot of things are arbitrary in any language. This name is a product of legacy. The original D incarnation (called D1) did not have immutable data as a language feature. To duplicate an array, you used the property `dup`, which I think is pretty well understood. So when D2 came along, and you might want to duplicate an array into an immutable array, we got `idup`. Yes, you have to read some documentation, not everything can be immediately obvious. There are a lot of obvious parts of D, and I think the learning curve is low. | ||
▲ | johnisgood 8 hours ago | parent [-] | |
Thanks for the reply. > Yes, but a lot of things are arbitrary in any language. I disagree, but to each their own. > Yes, you have to read some documentation, not everything can be immediately obvious. I do not disagree, but I wanted to know the rationale behind it ("map!(a => a.idup)")! |