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