So for a start that obviously won't be done at parse time
That's going to have to be dynamically executed
One thing you could do is keep track of the last arity in a variable and when calling the train, give it that tracked arity if the accumulator is truthy
Actually maybe it could be somewhat done at parse time
The quick would make the arity of the train its acting on be a lambda