improving std.array.array
monarch_dodra
monarchdodra at gmail.com
Sun Jul 22 08:54:42 PDT 2012
On Sunday, 22 July 2012 at 13:04:18 UTC, David Nadlinger wrote:
> I hit some of the problems you described a little while ago.
> Jonathan and I came to the conclusion that the best solution is
> to default to the same element type as the passed range, while
> allowing any type which the element type is convertible to to
> be specified via an extra template parameter, just as you
> proposed.
>
> I have a half-finished version (sans handling of narrow
> strings) lying around, but won't have time to polish it up for
> inclusion in the next few weeks, so feel free to go ahead.
>
> David
Yeah, I saw your posts regarding that. I hope I won't hit any
problems with my implementation.
> What about
>
> import std.conv: to;
> auto integralThirds = iota(1,20).map(a => to!int(a/3)).array;
>
> ?
>
> It even allows converting to strings, which is something I do
> very often.
While I won't argue the result is not the same, the intent is not
as clear (IMO).
Suppose the function I wanted to apply was not anonymous, but
"foo":
Your approach:
auto ints = iota(1,20).map(a => to!int(foo(a))).array;
or
auto ints = iota(1,20).map(foo).map(a => to!int(a)).array;
Which (IMO) really doesn't quite translate the intent as well as:
auto ints = iota(1,20).map(foo).array!int;
----
I think the bottom line about array is that it requires trivial
simplicity.
More information about the Digitalmars-d
mailing list