> On Feb 28, 2017, at 2:00 PM, David Hart <[email protected]> wrote:
>
>
>> On 28 Feb 2017, at 22:39, Douglas Gregor via swift-evolution
>> <[email protected] <mailto:[email protected]>> wrote:
>>
>>
>>> On Feb 27, 2017, at 11:21 PM, Nicolas Fezans via swift-evolution
>>> <[email protected] <mailto:[email protected]>> wrote:
>>>
>>> +1
>>> I would also welcome to be able to use "or" and "and" logical operators
>>> (not only the not operator) on these constraints.
>>
>> You already have “and’ constraints: it’s what you get out of the
>> comma-separated list of constraints in a where clause, or the “&”
>> composition syntax.
>>
>>> I have sometimes generic functions whose code is identical but is written
>>> twice: first with 'where T=P1' and then with 'where T=P2', being able to
>>> write for instance 'where T=(P1 or P2)' would be very handy IMO.
>>> One could often argue that additional protocols and extensions could be
>>> defined as a workaround to the situation I just mentioned but it seems
>>> often a bit of an overkill to me when you only have a couple of functions
>>> with that combination of requirements.
>>
>> “Or” constraints are a nonstarter for me, because you can’t meaningfully
>> type-check a generic function that uses “or” constraints: the problem goes
>> exponential in the number of “or” constraints and the meaning of the
>> function can change considerably depending on which set of terms are
>> satisfied—in which case you have ambiguities again!
>>
>> Whenever this topic comes up, I like to point people at:
>>
>> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2161.pdf
>> <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2161.pdf>
> Should we also follow Recommendation #2 and revert the P1 & P2 change to
> return to Any<P1, P2> :) Half-joking.
That line of argument got thoroughly shot down in the core team meeting when we
discussed the introduction of the & operator for types.
- Doug
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution