def _repr(self, memo=None):
    if (memo is None):
        from ibis.expr.format import FormatMemo
        memo = FormatMemo()
    opname = type(self).__name__
    pprint_args = []

    def _pp(x):
        return _safe_repr(x, memo=memo)
    for x in self.args:
        if isinstance(x, (tuple, list)):
            pp = repr(list(map(_pp, x)))
        else:
            pp = _pp(x)
        pprint_args.append(pp)
    return '{}({})'.format(opname, ', '.join(pprint_args))
def _repr(self, memo=None):
    if (memo is None):
        from ibis.expr.format import FormatMemo
        memo = FormatMemo()
    opname = type(self).__name__
    pprint_args = []

    def _pp(x):
        return _safe_repr(x, memo=memo)
    for x in self.args:
        if isinstance(x, (tuple, list)):
            pp = repr(list(map(_pp, x)))
        else:
            pp = _pp(x)
        pprint_args.append(pp)
    return '{}({})'.format(opname, ', '.join(pprint_args))