def lr(self, lis, op):
it = iter(lis)<EOL>res = trans(next(it))<EOL>for e in it:<EOL><INDENT>e = trans(e)<EOL>res = op(res, e)<EOL><DEDENT>return res<EOL>
performs this operation on a list from *left to right*
        op must take 2 args
        a,b,c  => op(op(a, b), c)