<div dir="ltr">I haven't been around for long in the Haskell community, but I have seen a few of these discussions taking long email rounds in different mailing lists.<div><br></div><div>I don't have a strong opinion at this point to add my vote here or there one way or the other, and I do appreciate the effort made by everyone to find a sort of consensus, as hard as that can be sometimes.</div>

<div><br></div><div>However, the question I keep asking myself is why can't the compiler disambiguate between two definitions with the same name based on the actual argument types?</div><div><br></div><div>This would allow packages to choose their own names for functions without such global-naming discussions and without much pain when using them.</div>

<div><br></div><div>e.g.:</div><div><br></div><div>> import PackageA (when)</div><div>> import PackageB (when)</div><div><br></div><div>> when (Just True) doSomething</div><div><br></div><div>versus:</div><div><br>

</div><div>> when True 1</div><div><br></div><div>Is there a theoretical or practical issue that makes this an undesirable feature in Haskell?<br></div><div><br></div></div>