On Sunday, 16 May 2021 at 09:55:31 UTC, Chris Piker wrote:
On Sunday, 16 May 2021 at 09:17:47 UTC, Jordan Wilson wrote:

Another example:
```d
auto r = [iota(1,10).map!(a => a.to!int),iota(1,10).map!(a => a.to!int)];
# compile error
```
Hi Jordan

Nice succinct example.  Thanks for looking at the code :)

So, honest question. Does it strike you as odd that the exact same range definition is considered to be two different types?

Maybe that's eminently reasonable to those with deep knowledge, but it seems crazy to a new D programmer. It breaks a general assumption about programming when copying and pasting a definition yields two things that aren't the same type. (except in rare cases like SQL where null != null.)

On a side note, I appreciate that `.array` solves the problem, but I'm writing pipelines that are supposed to work on arbitrarily long data sets (> 1.4 TB is not uncommon).

There are those far more learned than me that could help explain. But in short, yes, it did take a little getting used to it - I would recommend looking at Voldemort types for D.

Ironically, use of Voldemort types and range-based programming is what helps me perform large data processing.

Jordan


Reply via email to