def partition
      return enum_for(:partition) if not block_given?
      a,b = super
      return Erlang::Tuple[self.class.new(a), self.class.new(b)]
    end
def partition
      return enum_for(:partition) if not block_given?
      a,b = super
      return Erlang::Tuple[self.class.new(a), self.class.new(b)]
    end
Return 2 collections, the first containing all the elements for which the block
 evaluates to true, the second containing the rest.