module Hamster::List
def combinations(number)
def combinations(number) return Sequence.new(EmptyList) if number == 0 Stream.new do next self if empty? tail.combinations(number - 1).map { |list| list.cons(head) }.append(tail.combinations(number)) end end