> On Jun 9, 2016, at 3:27 AM, Jordan Rose via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> Hi, Paulo. Thanks for bringing this up; it’s definitely an interesting 
> problem to solve.
> 
> My thoughts are mostly in line with yours, that disambiguation at the call 
> site is the most Swift-like thing to do, at least as a first step. Maybe we 
> can add some way to record general preferences, or maybe just asking people 
> to define a wrapper function to put the disambiguation in one place is fine.
> 
> I’m not particularly a fan of the “from” syntax or the “@“ syntax, but I 
> don’t have anything better. (And the “not a fan” is entirely a taste thing, 
> plus a general desire not to steal new keywords or operator characters. 
> Neither of these are blockers.) I’ve been playing with silly things like this:
> 
> str.(ModuleA.capitalized)()
> 

Seeing all these proposals that people make, it makes me thinks that extensions 
as they exist are not fully understood... People seem to consider them  like 
the Xtext/Xtend/c# extension METHODS, which means that maybe they should also 
be added to Swift, and people would not be confused:

public static func capitalized(self:String)() {}    

Then these would be easily individually imported from module x,y or z with the 
current syntax, and then "extension String {}" would retain it current scoping 
behavior

No matter what, I think many extensions are just a bad outlook on OOD, but 
properly understood, they are great.

> which I think has come up on-thread already. (It’s close to Paul’s '::', 
> anyway.)
> 
> A bonus is if we can use this same thing for globals. We have a problem today 
> where “Foo.Bar” can’t refer to a member of a module if there’s also a type 
> named “Foo”; changing the syntax to “Foo::Bar” or “Bar from Foo” (or adding 
> it as an alternative) would solve that problem and provide consistency.
> 
> Sorry I don’t have anything too conclusive to add. My last point is that 
> while we do have a problem today, it’s a problem we’ve lived with for two 
> years, and any features we add to solve it are additive. That means it’s okay 
> if we don’t come up with an answer in Swift 3.
> 
> Jordan
> 
> 
>> On Jun 6, 2016, at 06:47, Paulo Faria via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>> Actually I don’t like the prioritization of the modules import. I’m much 
>> more in favor of disambiguating at call site. like we have to do in any 
>> other case of ambiguity in Swift. The concept of precedence is only present 
>> in operators and that makes sense because it’s in their nature. I think #4 
>> or #5 or any other way to disambiguate at call site would be the most 
>> appropriate.
>> 
>> 
>> 
>>> On Jun 4, 2016, at 10:29 PM, Paulo Faria <pa...@zewo.io> wrote:
>>> 
>>> Hello, everyone.
>>> 
>>> I want to discuss the problem of name ambiguity when a computed property or 
>>> function is defined with the same name and type in different modules. 
>>> Currently there’s no way to disambiguate the implementation in use cases 
>>> similar to the one contained in the gist below.
>>> 
>>> https://gist.github.com/paulofaria/f48d0b847a0fb7c125d163d0e349500a
>>> 
>>> The gist also contains some informal proposals. The idea is to create a 
>>> formal proposal based on the discussion that shall follow.
>>> 
>>> Cheers, 
>>> Paulo
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to