'Returns string, allows to use standard functions print() and str().
Examples
>>> from sympy import MutableDenseNDimArray
>>> a = MutableDenseNDimArray.zeros(2, 2)
>>> a
[[0, 0], [0, 0]]'

def __str__(self):

    def f(sh, shape_left, i, j):
        if (len(shape_left) == 1):
            return (('[' + ',    '.join([str(self[e]) for e in range(i, j)])) + ']')
        sh //= shape_left[0]
        return (('[' + ',    '.join([f(sh, shape_left[1:], (i + (e * sh)), (i + ((e + 1) * sh))) for e in range(shape_left[0])])) + ']')
    return f(self._loop_size, self.shape, 0, self._loop_size)
