On Sunday, 19 May 2019 at 10:07:35 UTC, Alex wrote:
On Sunday, 19 May 2019 at 06:34:18 UTC, Andrew Edwards wrote:

So the question is, how do I pull this off in D using just builtin arrays and phobos?

Any assistance is appreciated.


Slice operations exist, but they are defined mainly for arrays and not for arrays of arrays. Some basic operations (like setting) are possible, but as you see, even multiplication fails. You could reinvent something like

´´´
import std;

void main()
{
    int[][] M = [[1,2,3],[1,2,3],[1,2,3]];
    M.recursiveMultiplier(4);
    writeln(M);
}

void recursiveMultiplier(T, V)(T arr, V val) @nogc
{
    static if(isArray!(ElementType!T))
        arr.each!(el => el.recursiveMultiplier(val));
    else
        arr[] = arr[] * val;
}
´´´

Can you do me a favor and extend it to cover the cases where V is either an array or multidimensional array? The text I'm using has exercise to implement a bunch of matrix operations so that would help out a lot.


BUT:
As I saw, in the talk, NDarrays are referenced. The common (widely used and recommended) way to use this functionality in D is by using mir.ndslices.
http://docs.algorithm.dlang.io/latest/mir_ndslice.html

Yes, I'm aware. I'm actually am using Lubeck to accomplish much of this stuff but when it comes to the implementation exercises, I have to ditch the library and stick with vanilla D.

Reply via email to