> On Nov 26, 2016, at 17:19, Robert Widmann via swift-evolution 
> <[email protected]> wrote:
> 
> Just gotta field a version of that proposal that doesn’t “look like Haskell” 
> :)
Is there something wrong with Haskell's approach to imports? I don't know how 
they do it, so I'm unaware of any pros/cons to their approach. The ":)" makes 
me think I'm missing something...

> Seriously, though, would there be any objection to restoring the old behavior 
> of just silently ignoring perfect duplicates of operator definitions across 
> frameworks sans proposal?
Yeah, it could silently change how statements get evaluated, if I start writing 
code using one library's operators, then import a 3rd library which defines the 
same operators but with different precedences. There's probably not any 
ambiguities if the two libraries don't define the same actual function 
signatures (like one defines `+(Double, Double)->Double` and one defines 
`+(Int, Int)->Int`), but that doesn't help if the both define the same operator 
with the same signature with different precedences. And what if you want to 
define `+(Double, Int)->String`? Does the + operator take its precedence from 
the first library or the second?

Or for a slightly more plausible example, what if a library defines `*(Double, 
Int)->Double` and it does exactly what you'd expect it to do, but for whatever 
reason it was given the wrong precedence. Suddenly, code like this:
    let x = someDouble * 4 + 3 // 4 and 3 are inferred to be doubles
changes to this:
    let x = someDouble * 4 + 3 // 4 is inferred to be an Int, and 3 is inferred 
to be a double
This (I think) gives a different answer, purely because of the unexpected 
change in precedence. This would be especially hard to debug, since `let x = 
someDouble * 4` by itself would still give the correct answer even though it'd 
be using the "wrong" function.



What about allowing users to import a library's global functions and operators 
separately from its types? Or optionally importing the global stuff into a 
namespace (obviously this would necessitate adding namespace support)?

- Dave Sweeris
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to