N-dimensional slices is ready for comments!
Ilya Yaroshenko via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Fri Jun 19 03:13:40 PDT 2015
On Friday, 19 June 2015 at 01:46:05 UTC, jmh530 wrote:
> On Monday, 15 June 2015 at 08:40:31 UTC, Ilya Yaroshenko wrote:
>> Hi All,
>>
>> PR and Examples:
>> https://github.com/D-Programming-Language/phobos/pull/3397
>> DUB http://code.dlang.org/packages/dip80-ndslice
>>
>> N-dimensional slices is real world example where `static
>> foreach` would be useful.
>> Corresponding lines was marked with //TODO: static foreach
>>
>> Best regards,
>> Ilya
>
> The operator overloading and slicing mechanics look great, but
> I'm probably more excited about the future work you have listed.
>
> Some thoughts:
> The top line of ndslice.d says it is for "creating
> n-dimensional random access ranges". I was able to get the
> example for operator overloading working for dynamic arrays,
> but it doesn't seem to work for static. Hopefully this work can
> be extended. In addition, hopefully the future work on foreach
> byElement will be able to work on static arrays in addition to
> dynamic.
>
You can slice fixed size arrays:
auto myFun()
{
float[4096] data;
auto tensor = data[].sliced(256, 16);
///use tensor
}
> My second point seems to be related to a discussion on the
> github page about accessing N-dimensional arrays by index.
> Basically there are some circumstances where it is convenient
> to loop by index on an N-dimensional array.
>
Denis had the same concept already implemented in his `unstd`
library.
So, ndslice is going to have it too.
> Finally, I have been trying to do something like
> auto A = 4.iota.sliced(2, 2).array;
> auto B = to!(float[][])(A);
> without any luck. Seems to work though for one-dimensional
> arraays. I think instead you have to do something like
> auto A = iota(0.0f, 4.0f, 1).sliced(2, 2).array;
Thanks!
I will add this kind of functionality:
auto A = 4.iota.sliced(2, 2);
auto B = cast(float[][]) A;
import std.conv;
auto C = A.to!(float[][]); //calls opCast
More information about the Digitalmars-d-announce
mailing list