def each
      raise Erlang::ImproperListError if improper?
      return to_enum unless block_given?
      list = self
      until list.empty?
        yield(list.head)
        list = list.tail
      end
      return self
    end
def each
      raise Erlang::ImproperListError if improper?
      return to_enum unless block_given?
      list = self
      until list.empty?
        yield(list.head)
        list = list.tail
      end
      return self
    end
Call the given block once for each item in the list, passing each
 item from first to last successively to the block. If no block is given,
 returns an `Enumerator`.

 @return [self]
 @yield [item]