def drop_while(&block)
      raise Erlang::ImproperListError if improper?
      return enum_for(:drop_while) unless block_given?
      list = self
      list = list.tail while !list.empty? && yield(list.head)
      return list
    end
def drop_while(&block)
      raise Erlang::ImproperListError if improper?
      return enum_for(:drop_while) unless block_given?
      list = self
      list = list.tail while !list.empty? && yield(list.head)
      return list
    end
Return a `List` which contains all elements starting from the
 first element for which the block returns `nil` or `false`.

 @example
   Erlang::List[1, 3, 5, 7, 6, 4, 2].drop_while { |e| e < 5 }
   # => Erlang::List[5, 7, 6, 4, 2]

 @return [List, Enumerator]
 @yield [item]