Method: Immutable::List#subsequences

Defined in:
lib/immutable/list.rb

#subsequences {|sublist| ... } ⇒ self

Yield every non-empty sublist to the given block. (The entire List also counts as one sublist.)

Examples:

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

Yields:

  • (sublist)

    One or more contiguous elements from this list

Returns:

  • (self)


1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
# File 'lib/immutable/list.rb', line 1133

def subsequences(&block)
  return enum_for(:subsequences) if not block_given?
  if not empty?
    1.upto(size) do |n|
      yield take(n)
    end
    tail.subsequences(&block)
  end
  self
end