Static Length Propagation of Ranges
ZombineDev via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Oct 20 15:53:35 PDT 2016
On Thursday, 20 October 2016 at 16:25:53 UTC, Meta wrote:
> On Thursday, 20 October 2016 at 13:05:05 UTC, Nordlöw wrote:
>> On Thursday, 20 October 2016 at 12:38:40 UTC, Nordlöw wrote:
>>> ElementType!R[n] arrayN(size_t n, R)(R r)
>>> {
>>> assert(r.length == n);
>>> typeof(return) dst;
>>> import std.algorithm.mutation : copy;
>>> r.copy(dst[]);
>>> return dst;
>>> }
>>
>> Is there a place for part of this logic in Phobos?
>>
>> I'm thinking perhaps array{N,Exactly} should be added to
>> std.array.
>>
>> The idea came to me after learning about dependent types in
>> Idris:
>>
>> http://www.idris-lang.org/
>
> There was a pull request awhile back for a small function that
> creates fixed-length arrays, but I think it was only intended
> to create them from dynamic arrays (such as `auto sarr = [1, 2,
> 3].staticArray`). Personally I think it would be nice to have a
> version of `array` that creates a static array, but I don't
> know how often it would be used or what the pitfalls are, if
> any.
I think you're talking about this PR:
https://github.com/dlang/phobos/pull/4090. It handles range
iteration, as well as opApply iteration.
I also think that the addition is worth having, though Andrei
seemed to disagree. The (other?) major obstacle is safe usage,
which currently is not enforced by the compiler, see:
https://issues.dlang.org/show_bug.cgi?id=8838
https://issues.dlang.org/show_bug.cgi?id=12625
On the bright side, it looks like one of Walter's PRs for DIP1000
should address those issues:
https://github.com/dlang/dmd/pull/5972/files?diff=unified#diff-33b3e2fefc5298c0b9de67897929e7ceR89
More information about the Digitalmars-d-learn
mailing list