code: def scanl(f: Callable[[T, U], T], x: T, xs: Iterable[U]) -> Iterator[T]:
      
  
      return accumulate(prepend(x, xs), f)
docs: Make an iterator that returns accumulated results of a binary function
      applied to elements of an iterable.
  
      .. math::
          scanl(f, x_0, [x_1, x_2, ...]) = [x_0, f(x_0, x_1), f(f(x_0, x_1), x_2), ...]
  
      Parameters
      ----------
      f
          A binary function of two arguments of type T.
      x
          An initializer element of type T.
      xs
          An iterable of elements of type T. 
  
      Returns
      -------
      Iterator
          The iterator of accumulated results.
  
  
      Examples
      --------
      >>> from delphi.utils.fp import scanl
      >>> list(scanl(lambda x, y: x + y, 10, range(5)))
      [10, 10, 11, 13, 16, 20]