def and_then(func)
      PartialFunction.new(@defined_at_proc, lambda { |x| func.call(self.call(x)) })
    end
def and_then(func)
      PartialFunction.new(@defined_at_proc, lambda { |x| func.call(self.call(x)) })
    end
Composes this partial function with a transformation function that
 gets applied to results of this partial function.
 @param  [Proc] func the transformation function
 @return [PartialFunction] a partial function with the same domain as this partial function, which maps
         arguments +x+ to +func.call(self.call(x))+.