I see. TBH, I don’t understand why it says “Any” in the "generalized 
existentials” but everything else is clear. 

Thank you Slava!

R+

> On 5 Sep 2017, at 01:52, Slava Pestov <spes...@apple.com> wrote:
> 
> Hi Rudolf,
> 
> What you are describing is not possible right now. The protocol PointType 
> cannot be used as a type at all, because it has an associated type 
> requirement. Also it is not clear what a ‘where’ clause attached to a type 
> alias would mean.
> 
> There has been some discussion of ‘generalized existentials’ on the evolution 
> list. So eventually, you might be able to say something like this:
> 
> typealias Point = Any<Point : PointType where Point.Float == Float>
> 
> Slava
> 
>> On Sep 4, 2017, at 6:12 PM, Rudolf Adamkovič via swift-users 
>> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote:
>> 
>> I have the following ProceduralDrawing type:
>> 
>> public struct ProceduralDrawing<Float, Point: PointType> where Point.Float 
>> == Float {
>>     // ... code that used Float and Point ...
>> }
>> 
>> public protocol PointType {
>>     associatedtype Float: FloatingPoint
>>     var x: Float { get }
>>     var y: Float { get }
>> }
>> 
>> I would like to avoid adding Point as a generic parameter but the following 
>> doesn’t work:
>> 
>> public struct ProceduralDrawing<Float: FloatingPoint> {
>>     // ERROR: 'where' clause cannot be attached to a non-generic declaration
>>     typealias Point = PointType where Point.Float == Float
>>     // ... code that uses Float and Point ...
>> }
>> 
>> Is there a way to do this? If not, why?
>> 
>> Thanks!
>> 
>> R+
>> _______________________________________________
>> swift-users mailing list
>> swift-users@swift.org <mailto:swift-users@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-users
> 

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to