Status of multidimensional slicing

Mason McGill mmcgill at caltech.edu
Fri Mar 14 13:35:23 PDT 2014


>> // So why shouldn't this work?
>> auto range = 0..10;
>> foreach (i; range) doScience(i);
>
> Replace the first line with:
>
> 	auto range = iota(0, 10);
>
> and it will work. It's not *that* hard to learn, is it?

True, but I think the issue at hand when discussing "sugary" 
syntax is clarity and expressiveness rather than completeness.  
In many domains, programmer working memory is at a premium, and 
code like this:
{
     auto samples = meshgrid(iota(0, 2), iota(0, 100), iota(0, 
100));
     vector[StridedSlice(0, 10, 2)] = iota(1, 6);
     plot(iota(-10, 10), myFunction(iota(-10, 10)));
     foreach (i; square(iota(0, 10))) performSquareDance(i);
}
might not be as respectful of that resource as code like this:
{
     auto samples = meshgrid(0..2, 0..100, 0..100);
     vector[(0..10).by(2)] = 1..6;
     plot(-10..10, myFunction(-10..10));
     foreach (i; square(0..10)) performSquareDance(i);
}

Reference for `meshgrid`:
http://www.mathworks.com/help/matlab/ref/meshgrid.html

Reference for strided indexing:
http://docs.scipy.org/doc/numpy/user/basics.indexing.html

On Friday, 14 March 2014 at 14:36:29 UTC, H. S. Teoh wrote:
> On Fri, Mar 14, 2014 at 12:29:34PM +0000, bearophile wrote:
>> Mason McGill:
>> 
>> >My concern is that this design may be ignoring some of the 
>> >lessons
>> >the SciPy community has learned over the past 10+ years.
>> 
>> Thank you for your help. An injection of experience is quite
>> important here. Julia is far newer than D, and yet it has 
>> already a
>> better design and more refined implementation in several things
>> related to numerical computing.
>> 
>> 
>> >// So why shouldn't this work?
>> >auto range = 0..10;
>> >foreach (i; range) doScience(i);
>> 
>> People have suggested this lot of time ago, again and again. 
>> So I
>> ask that question for Walter.
> [...]
>
> Replace the first line with:
>
> 	auto range = iota(0, 10);
>
> and it will work. It's not *that* hard to learn, is it?
>
>
> T



More information about the Digitalmars-d mailing list