def or_else(other)
      PartialFunction.new(lambda { |x| self.defined_at?(x) || other.defined_at?(x) },
                          lambda { |x| if self.defined_at?(x) then self.call(x) else other.call(x) end })
    end
def or_else(other)
      PartialFunction.new(lambda { |x| self.defined_at?(x) || other.defined_at?(x) },
                          lambda { |x| if self.defined_at?(x) then self.call(x) else other.call(x) end })
    end
Composes this partial function with a fallback partial function which
 gets applied where this partial function is not defined.
 @param [PartialFunction] other the fallback function
 @return [PartialFunction] a partial function which has as domain the union of the domains
         of this partial function and +other+. The resulting partial function takes +x+ to +self.call(x)+
         where +self+ is defined, and to +other.call(x)+ where it is not.