code: def printlet(flatten=False, **kwargs):
      
      chunk = yield
      if flatten:
          while True:
              print(*chunk, **kwargs)
              chunk = yield chunk
      else:
          while True:
              print(chunk, **kwargs)
              chunk = yield chunk
docs: Print chunks of data from a chain
  
      :param flatten: whether to flatten data chunks
      :param kwargs: keyword arguments as for :py:func:`print`
  
      If ``flatten`` is :py:const:`True`, every chunk received is unpacked.
      This is useful when passing around connected data, e.g. from :py:func:`~.enumeratelet`.
  
      Keyword arguments via ``kwargs`` are equivalent to those of :py:func:`print`.
      For example, passing ``file=sys.stderr`` is a simple way of creating a debugging element in a chain:
  
      .. code::
  
          debug_chain = chain[:i] >> printlet(file=sys.stderr) >> chain[i:]