Function called twice

Jordan Wilson wilsonjord at gmail.com
Fri Aug 2 22:43:47 UTC 2019


On Friday, 2 August 2019 at 22:35:53 UTC, Adam D. Ruppe wrote:
> On Friday, 2 August 2019 at 21:44:28 UTC, Jordan Wilson wrote:
>> 	// outputs 1 2 2 3
>> 	z.map!(a => tuple!("number","iseven")(a, a.isEven))
>> 	 .filter!(a => a.iseven)
>> 	 .array;
>
> I *think* what's happening here is first it calls map() first 
> going into the filter... then it gets called again when it is 
> being evaluated for the array.
>
> So like basically consider if you had:
>
> if(filter(a())
>    array ~= a();
>
>
> that kind of thing. I think anyway, I'm not entirely sure but 
> it fits what I can see happening here.
>
> but idk why it is actually doing this in the phobos 
> implementation

In my real-world case "isEven" is a long running function. I'll 
put an .array after the map and see if it makes a difference.

Thanks,

Jordan


More information about the Digitalmars-d-learn mailing list