I dun a DIP, possibly the best DIP ever

Manu turkeyman at gmail.com
Fri Apr 24 07:39:44 UTC 2020


On Fri, Apr 24, 2020 at 5:35 PM Walter Bright via Digitalmars-d <
digitalmars-d at puremagic.com> wrote:

> On 4/23/2020 11:52 PM, Manu wrote:
> > On Fri, Apr 24, 2020 at 4:35 PM Walter Bright via Digitalmars-d
> > <digitalmars-d at puremagic.com <mailto:digitalmars-d at puremagic.com>>
> wrote:
> >
> >     On 4/23/2020 10:51 PM, Manu wrote:
> >      > Another reason I introduce `...` is for static fold.
> >      > The follow-up to this DIP would make this expression work:
> >      >
> >      >    `Tup + ...`  ->  `Tup[0] + Tup[1] + ... + Tup[$-1]`
> >
> >     I expect static foreach can handle that. But we can dig a little
> deeper. D
> >     doesn't have a special syntax to sum the elements of an array, but
> it can use a
> >     library function to do it. The next observation is that to sum the
> elements
> >     of a
> >     tuple, all the tuple members need to be implicitly convertible to a
> single
> >     arithmetic type. There is a way to do that:
> >
> >           [ Tup ]
> >
> >
> > No, it's not necessary that they are common types. It's actually the
> opposite
> > intent of the expression.
>
> The only way:
>
>    1 + 'a' + 1.0 + 1L + 2.0L
>
> can be computed is if the operands are brought to a common arithmetic type.
>

It doesn't make much sense to think in terms of primitive types. As I just
said (but you truncated), operator overloads are almost certainly part of
this equation.
I think it's more common to do a fold like this with logical operators
though; `&&` appears 9 times out of 10 in my code.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20200424/aafc2a4a/attachment-0001.htm>


More information about the Digitalmars-d mailing list