Maybe do the concatenation without creating a new instance... (or with immutable data structures this means just using the pointer to old when creating a "new" one).

@Thorium: Are you working on a Master's thesis or a PhD in Computer Science?

I'm not wanting to optimize LINQ... but to learn to use it better.

In the short video, I see how matching 'has to know something about these results that the function syntax won't tell us'. I imagine reflection might be used for this. Regarding memory allocation, it is what it is for me ~ I'm not asking for changes so that LINQ can fold more purely and quickly.

Surely you are in school somewhere... ?

Cheers.