foreach thoughts

monarch_dodra monarchdodra at gmail.com
Tue Jan 14 11:11:19 PST 2014


On Tuesday, 14 January 2014 at 19:05:22 UTC, Peter Alexander 
wrote:
> On Tuesday, 14 January 2014 at 18:38:27 UTC, David Nadlinger 
> wrote:
>> On Tuesday, 14 January 2014 at 16:31:00 UTC, Dicebot wrote:
>>> So it does inline but end result is still less optimal 
>>> assembly-wise.
>>
>> The problem, by the way, seems to be that the program actually 
>> contains two loops that LLVM cannot merge: One in the filter() 
>> constructor (skipping the initial run of even elements), and 
>> the actual foreach loop in main().
>>
>> David
>
> I wonder if there is some way the language could help with that 
> in the common case. For example, provide an opApply for all 
> non-infinite ranges that can be used with foreach instead of 
> front/empty/popFront. I imagine opApply is much easier to 
> inline and optimise than trying to piece range operations and 
> state back together to see the underlying loop.

Actually, you could give an opApply for infinite ranges too. 
foreach loops can have breaks, and opApply knows how to handle 
them.


More information about the Digitalmars-d mailing list