> for the compatibility, the default Hash#key_missing should be
> class Hash
>   def key_missing(key)
>     nil
>   end
> end
> And my question is what functionality am I missing compare to
> Hash@default and its accessors? (other than compatibility)

well, if instead it's

class Hash
  def key_missing(key)
    default
  end
end

then I don't think you're missing any functionality. Except that #[] (and
such) call the internal Hash#default directly, so trying to
overload/redefine it does not work. 

matju