> Perhaps instead of being a lambda or block it should be a method, with the idea that Differ can be subclassed?

I'm :-1: on this idea.  I think subclassing is a fine technique when it's localized within a single code base, but it leads to the brittle base class problem when it crosses code bases (i.e. base class in one code base, subclass in another).  We're running into this in rspec-core where @JonRowe is working on updating the formatter classes but we have to be uber careful not to break existing formatters that subclass formatter base classes.

I much prefer the composition approach of passing the lambda option.