code: def mapScan(mapFunc, reductionFunc, *iterables, **kwargs):
      
      return submit(
          _recursiveReduce,
          mapFunc,
          reductionFunc,
          True,
          *iterables
      ).result()
docs: Exectues the :meth:`~scoop.futures.map` function and then applies a
      reduction function to its result while keeping intermediate reduction
      values. This is a blocking call.
  
      :param mapFunc: Any picklable callable object (function or class object with
          *__call__* method); this object will be called to execute the Futures.
          The callable must return a value.
      :param reductionFunc: Any picklable callable object (function or class object
          with *__call__* method); this object will be called to reduce pairs of
          Futures results. The callable must support two parameters and return a
          single value.
      :param iterables: Iterable objects; each will be zipped to form an iterable
          of arguments tuples that will be passed to the mapFunc object as a
          separate Future.
      :param timeout: The maximum number of seconds to wait. If None, then there
          is no limit on the wait time.
  
      :returns: Every return value of the reduction function applied to every
                mapped data sequentially ordered.