Andrei's list of barriers to D adoption

Ola Fosheim Grøstad via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 7 14:06:01 PDT 2016


On Tuesday, 7 June 2016 at 20:55:12 UTC, Ola Fosheim Grøstad 
wrote:
> repeat10:{
>    N:<{ n:@int; do 10->n; inner; exit n};
>    i:@int;
>    do N -> iterate{ do inner; }
> }
>
> repeat99:repeat10{
>   N:<{ do 99->n; inner; }
> }
>
> repeat99{ do i -> print; "bottles of wine" ->print }


Adding some comments, as the example was not clear on its own:

// repeat10 is a new pattern (class) inheriting from object by 
default
repeat10:{
     // N is a virtual pattern (function)
     N:<{ n:@int; do 10->n; inner; exit n};
    do N -> iterate{ do inner; }  // this is a subclass of the 
previously defined iterate pattern
}

// repeat99 is a new pattern inheriting from repeat10 above
repeat99:repeat10{
     // N is a specialization of N in repeat10
     // N expands to {n:@int; do 10->n; 99->n; inner; exit n}
    N:<{ do 99->n; inner; }
}

// this is a subclass of repeat 99
repeat99{ do i -> print; "bottles of wine" ->print }


Give or take, I haven't used Beta in 20 years. Abstractions is 
not the problem, a very simple language can provide what most 
programmers need. Perhaps not with a familiar syntax though.



More information about the Digitalmars-d mailing list