On Sunday, 26 April 2015 at 10:17:59 UTC, Manu wrote:
I find that my lazy ranges often end up on the stack, but I
can't
assign/initialise directly: float[] a = b.transform[];
Instead I need to: float[] a; b.transform.copy(a[]);
To enable the first line, builtin arrays would need to be able to
recognize arbitrary range types and do the right thing. You can
always do this:
float[] a = b[].transform.array;
I've got a lib to enable this syntax:
Array!float a = b[].transform_1;
a[i..j] = c[x..y].transform_2;
for arbitrary user-defined or composed n-dimensional range types.
here: https://github.com/evenex/autodata
where ranges are made more interoperable by common mixin
templates which also cut down on a lot of boilerplate.
(see examples in:
https://github.com/evenex/autodata/tree/master/source/spaces)