> On May 27, 2016, at 7:20 AM, Thorsten Seitz via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> From the point of view of the type system `P & Q` is an anonymous supertype 
> of `P` and `Q`.
> This would be just the same if the syntax was `Any<P, Q>`. I don’t see a 
> semantic difference here.
> 
> Whether that is a "container“ or not seems to be an implementation detail to 
> me but should have nothing to do with the type system.
> In what way should it be "lossy“?
> 
> Am I missing something?

I was a bit confused as well and had to read this several times.  I think this 
is talking about a syntactic “container” - i.e. brackets of some kind (as 
opposed to a “free floating” syntax).  I don’t think it is talking about a 
semantic difference of any kind.  But maybe I am still confused an not 
understanding what was intended...

> 
> -Thorsten
> 
> 
>> Am 27.05.2016 um 12:30 schrieb L. Mihalkovic <laurent.mihalko...@gmail.com 
>> <mailto:laurent.mihalko...@gmail.com>>:
>> 
>> It seem to me we are debating the how of a what that has not been defined. 
>> The root question behind all these alternatives seems to be to decide if the 
>> existential-ness should be carried by a 'container' that is then refined 
>> internally, or derived from the presence of the free-floating refinements. 
>> This is the question that splits the possible syntaxes into these 2 groups:
>> 
>> Any<> Any[]
>> Type<> Type<> 
>> Existential<>
>> 
>> and the (these are all straw man representations that should not limit the 
>> thinking)
>> 
>> P & Q
>> @P and @Q
>> is P , Q
>> P & Q typed
>> 
>> If the answer is to use a 'container' then the next question is to see its 
>> relationship to the other existing containers: is it the result of a 
>> transformation, is it a superset, or a super type; it is obviously lossy, 
>> but not entirely if the solution follows in some of Brent's past suggestion 
>> to make some existential types instantiate-able (which opens a very similar 
>> problem to what java faced for several years when trying to identify a 
>> universal collection literal syntax).
>> That will narrow down the field of possible matches... until one syntax 
>> emerges as conveying the meaning that is reflected by the answers to each 
>> question.
>> 
>> On May 27, 2016, at 10:55 AM, Thorsten Seitz via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>>> We could just write
>>> 
>>> let x: P & Q
>>> instead of
>>> let x: Any<P, Q>
>>> 
>>> let x: Collection where .Element: P
>>> instead of
>>> let x: Any<Collection where .Element: P>
>>> 
>>> let x: P & Q where P.T == Q.T
>>> instead of
>>> let x: Any<P, Q where P.T == Q.T>
>>> 
>>> let x: P & Q & R
>>> instead of
>>> let x: Any<P, Q, R>
>>> 
>>> let x: Collection
>>> instead of
>>> let x: Any<Collection>
>>> 
>>> 
>>> This would avoid the confusion of Any<T1, T2> being something completely 
>>> different than a generic type (i.e. order of T1, T2 does not matter whereas 
>>> for generic types it is essential).
>>> 
>>> 
>>> -Thorsten
>>> 
>>> 
>>> 
>>>> Am 26.05.2016 um 20:11 schrieb Adrian Zubarev via swift-evolution 
>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>>:
>>>> 
>>>> Something like type<…> was considered at the very start of the whole 
>>>> discussion (in this thread 
>>>> <https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160502/016523.html>),
>>>>  but it does not solve the meaning of an existential type and also might 
>>>> lead to even more confusion. 
>>>> 
>>>> From my perspective I wouldn’t use parentheses here because it looks more 
>>>> like an init without any label Type.init(…) or Type(…). I could live with 
>>>> Any[…] but this doesn’t look shiny and Swifty to me. Thats only my 
>>>> personal view. ;)
>>>> 
>>>> 
>>>> 
>>>> 
>>>> -- 
>>>> Adrian Zubarev
>>>> Sent with Airmail
>>>> 
>>>> Am 26. Mai 2016 bei 19:48:04, Vladimir.S via swift-evolution 
>>>> (swift-evolution@swift.org <mailto:swift-evolution@swift.org>) schrieb:
>>>> 
>>>>> Don't think {} is better here, as they also have "established meaning in 
>>>>> Swift today".
>>>>> 
>>>>> How about just Type(P1 & P2 | P3) - as IMO we can think of such 
>>>>> construction as "creation" of new type and `P1 & P2 | P3` could be 
>>>>> treated 
>>>>> as parameters to initializer.
>>>>> 
>>>>> func f(t: Type(P1 & P2 | P3)) {..}
>>>>> 
>>>>> 
>>>>> On 26.05.2016 20:32, L. Mihalkovic via swift-evolution wrote:
>>>>> > How about something like Type{P1 & P2 | P3} the point being that 
>>>>> > "<...>" has an established meaning in Swift today which is not what is 
>>>>> > expressed in the "<P1,P2,P3>" contained inside Any<P1, P2,P3>.
>>>>> >
>>>>> >> On May 26, 2016, at 7:11 PM, Dave Abrahams via swift-evolution 
>>>>> >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>>>> >>
>>>>> >>
>>>>> >>> on Thu May 26 2016, Adrian Zubarev <swift-evolution@swift.org 
>>>>> >>> <mailto:swift-evolution@swift.org>> wrote:
>>>>> >>>
>>>>> >>> There is great feedback going on here. I'd like to consider a few 
>>>>> >>> things here:
>>>>> >>>
>>>>> >>> * What if we name the whole thing `Existential<>` to sort out all
>>>>> >>> confusion?
>>>>> >>
>>>>> >> Some of us believe that “existential” is way too theoretical a word to
>>>>> >> force into the official lexicon of Swift. I think “Any<...>” is much
>>>>> >> more conceptually accessible.
>>>>> >>
>>>>> >>>
>>>>> >>> This would allow `typealias Any = Existential<>`. * Should
>>>>> >>> `protocol A: Any<class>` replace `protocol A: class`? Or at least
>>>>> >>> deprecate it. * Do we need `typealias AnyClass = Any<class>` or do we
>>>>> >>> want to use any class requirement existential directly? If second, we
>>>>> >>> will need to allow direct existential usage on protocols (right now we
>>>>> >>> only can use typealiases as a worksround).
>>>>> >>
>>>>> >> --
>>>>> >> Dave
>>>>> >>
>>>>> >> _______________________________________________
>>>>> >> swift-evolution mailing list
>>>>> >> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>>>> >> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>>>> >> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>>>> > _______________________________________________
>>>>> > swift-evolution mailing list
>>>>> > swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>>>> > https://lists.swift.org/mailman/listinfo/swift-evolution 
>>>>> > <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>>>> >
>>>>> _______________________________________________
>>>>> swift-evolution mailing list
>>>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>>> 
>>>> 
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>> <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