def proximal_linfty(space):
    r"""Proximal operator factory of the ``l_\infty``-norm.

    Function for the proximal operator of the functional ``F`` where ``F``
    is the ``l_\infty``-norm::

        ``F(x) =  \sup_i |x_i|``

    Parameters
    ----------
    space : `LinearSpace`
        Domain of ``F``.

    Returns
    -------
    prox_factory : callable
        Factory for the proximal operator to be initialized.

    Notes
    -----
    The proximal is computed by the Moreau identity and a projection onto an
    l1-ball [PB2014].

    See Also
    --------
    proj_l1 : projection onto l1-ball
    """
    class ProximalLInfty(Operator):

        """Proximal operator of the linf-norm."""

        def __init__(self, sigma):
            """Initialize a new instance.

            Parameters
            ----------
            sigma : positive float
                Step size parameter
            """
            super(ProximalLInfty, self).__init__(
                domain=space, range=space, linear=False)
            self.sigma = float(sigma)

        def _call(self, x, out):
            """Return ``self(x)``."""

            radius = 1

            if x is out:
                x = x.copy()

            proj_l1(x, radius, out)
            out.lincomb(-1, out, 1, x)

    return ProximalLInfty
r"""Proximal operator factory of the ``l_\infty``-norm.

    Function for the proximal operator of the functional ``F`` where ``F``
    is the ``l_\infty``-norm::

        ``F(x) =  \sup_i |x_i|``

    Parameters
    ----------
    space : `LinearSpace`
        Domain of ``F``.

    Returns
    -------
    prox_factory : callable
        Factory for the proximal operator to be initialized.

    Notes
    -----
    The proximal is computed by the Moreau identity and a projection onto an
    l1-ball [PB2014].

    See Also
    --------
    proj_l1 : projection onto l1-ball