Why Ruby?

Stephan Soller stephan.soller at helionweb.de
Mon Dec 13 02:50:39 PST 2010


On 12.12.2010 21:17, spir wrote:
> On Sun, 12 Dec 2010 12:23:03 -0600
> Andrei Alexandrescu<SeeWebsiteForEmail at erdani.org>  wrote:
>
>> Going now
>> back to D, we can imagine the following lowering:
>>
>> fun (a, b ; c) stmt
>>
>> =>
>>
>> fun(c, (a, b) { stmt })
>
> It seems to me that lowering is analog to redefine "shallow" syntax (in fact, syntactic sugar) into a deeper syntax mirroring that actual AST. The syntax tree for foreach/iteration could be written as:
>
> iteration:
> 	collection: c
> 	loopVarNames: ['a','b']
> 	block: stmt
>
> And generalised into:
>
> blockOperation:
> 	source: c
> 	loopVarNames: ['a','b']
> 	block: stmt
> where your 'func' is a "block-wise operation". What do you think?
>
> But I do not see in what Ruby-like syntax and point of view are clearer; actally, I find D far more readable.
> And even less what this would bring to D. This is interesting in highly reflexive languages; even more reflexive than Ruby in fact, where one could tweak the block at runtime. But this is not the perspective of D, I guess.
>
>
> Denis
> -- -- -- -- -- -- --
> vit esse estrany ☣
>
> spir.wikidot.com
>

I think it's a matter of consistency. In Ruby blocks are used all the 
time for pretty much everything. In D this isn't the case because 
usually templates are used for stuff where blocks are used in Ruby (e.g. 
map, group and find in std.algorithm).

I don't know if it's possible to unify the way to "pass code as an 
argument" in D but that's where Ruby really shines in my opinion: 
consistency in usage.

Happy programming
Stephan Soller


More information about the Digitalmars-d mailing list