':param function: The function that should be applied to
elements of ``lists``.  It should take as many arguments
as there are ``lists``.
:param lists: The underlying lists.
:param cache_size: Determines the size of the cache used
by this lazy map.  (default=5)'

def __init__(self, function, *lists, **config):

    if (not lists):
        raise TypeError('LazyMap    requires    at    least    two    args')
    self._lists = lists
    self._func = function
    self._cache_size = config.get('cache_size', 5)
    self._cache = ({} if (self._cache_size > 0) else None)
    self._all_lazy = (sum((isinstance(lst, AbstractLazySequence) for lst in lists)) == len(lists))
