'Uncurry this application expression
return: A tuple (base-function, arg-list)'

def uncurry(self):

    function = self.function
    args = [self.argument]
    while isinstance(function, ApplicationExpression):
        args.insert(0, function.argument)
        function = function.function
    return (function, args)
