Elaborating on ambiguity. import libfoo import libbar open() # open is coming from foo.
Later down the road libbar decided to add proc open(). Second developer (Not the original author of above code) needed to use the latest version of libbar , in some other part of the code. Compiler might report the ambuigity and be done. But the burden of namespace resolution falls on second developer's head to figure out open() was added to by libbar's new version and the open() was meant to be from flibfoo. >From libbar's point of view, addition of new optional elements in api becomes >a breaking change requiring major version change.