Why Ruby?

retard re at tard.com.invalid
Wed Dec 15 14:55:07 PST 2010


Wed, 15 Dec 2010 16:47:01 -0600, Andrei Alexandrescu wrote:

> On 12/15/10 4:42 PM, retard wrote:
>> Wed, 15 Dec 2010 16:33:43 -0600, Andrei Alexandrescu wrote:
>>
>>> On 12/15/10 4:18 PM, retard wrote:
>>>> Wed, 15 Dec 2010 22:23:35 +0100, Jacob Carlborg wrote:
>>>>> Array(1, 2, 3, 4, 5).sortWith(_>   _)
>>>>
>>>> The first instance of _ (from left to right) is replaced with the
>>>> first element of the parameter tuple, the second with second element,
>>>> etc.
>>>>
>>>> This is actually very useful since many lambdas only use 1-2
>>>> parameters. It has its limitations. For example referring to the same
>>>> parameter requires a named parameter or some other hack. Combined
>>>> with Haskell style partial application this allows stuff like:
>>>>
>>>> Array(1, 2, 3, 4, 5).foreach { println }
>>>>
>>>> Array(1, 2, 3, 4, 5).filter(2<)
>>>
>>> For short lambdas I prefer Phobos' convention of using "a" and "b",
>>> e.g. "2<  a" or "a<  b". Since it's a string, "_<  _" would have been
>>> usable with Phobos too but I wouldn't like such a change.
>>
>> I haven't have time to test this (still using D1 + Tango), but these
>> magical 'a' and 'b' make me wonder whether there are any namespace
>> issues. Can you refer to symbols defined in the current module or in
>> the Phobos module the collection function is declared? Do the 'a' and
>> 'b' shadow some other instances of 'a' and 'b'?
> 
> There are no hygiene issues, but lookup is limited to the modules
> included in std.functional. That's goes well with the charter of short
> lambdas - I mean, they are short :o).

Ha, that's the thing I was after. Hopefully it's well documented. No need 
to answer, I can check it myself.


More information about the Digitalmars-d mailing list