the resolution of that issue seems odd -  If I have two completely unrelated 
libraries. Say DataFrames and one of my own. I export value( ::MyType) I'm 
happily using it. Some time later I Pkg.update(), unbeknownst to me the 
DataFrames dev team have added an export of value( ::DataFrame, ...) suddenly 
all my code which imports both breaks and I have to go through the entire stack 
qualifying the calls, as do other users of my module? That doesn't seem right, 
there is no ambiguity I can see and the multiple dispatch should continue to 
work correctly. 

Fundamentally I want the two value() functions to collapse and not have to 
qualify them. If there is a dispatch ambiguity then game over, but if there 
isn't I don't see any advantage (and lots of negatives) to preventing the 
import. 

I'd argue the same is true with overloading methods in Base. Why would we 
locally mask get if there is no dispatch ambiguity even if I don't importall 
Base. 

Qualifying names seems like an anti pattern in a multiple dispatch world. 
Except for those edge cases where there is an ambiguity of dispatch. 

Am I missing something? Perhaps I don't understand multiple dispatch well 
enough? 

Reply via email to