I see the code, but not the reasons. If the terms are left-recursive, why not just collapse them _before_ calling ``+? It makes more sense
In practice, this seems to happen; I haven't been able to make a test case where lfun::``+() gets more than one argument.
to suppose that the arguments to ``+ are evaluated right-recursively, IMO.