def subsequences(&block)
      raise Erlang::ImproperListError if improper?
      return enum_for(:subsequences) if not block_given?
      if not empty?
        1.upto(size) do |n|
          yield take(n)
        end
        tail.subsequences(&block)
      end
      return self
    end
def subsequences(&block)
      raise Erlang::ImproperListError if improper?
      return enum_for(:subsequences) if not block_given?
      if not empty?
        1.upto(size) do |n|
          yield take(n)
        end
        tail.subsequences(&block)
      end
      return self
    end
Yield every non-empty sublist to the given block. (The entire `List` also
 counts as one sublist.)

 @example
   Erlang::List[1, 2, 3].subsequences { |list| p list }
   # prints:
   # Erlang::List[1]
   # Erlang::List[1, 2]
   # Erlang::List[1, 2, 3]
   # Erlang::List[2]
   # Erlang::List[2, 3]
   # Erlang::List[3]

 @yield [sublist] One or more contiguous elements from this list
 @return [self]