ConstructibleFromValue<ValueType == V> Sounds way better to me than the second option considering we can't do just
ConstructibleFromValue<V> Because of lack of order of associated types. So IMO either we introduce order or we use == syntax. Maybe somebody has more ideas of a better syntax? On Tue, 6 Dec 2016 at 11:33 Anton Zhilin via swift-evolution < swift-evolution@swift.org> wrote: > What makes me worry is if this syntax is really the best one possible: > > typealias ConstructibleFrom<V> = ConstructibleFromValue where ValueType == V > > I find it strange that such exact line with typealias and where is > required. I was hoping for an expression that lets us specialize a protocol > and use it in-place, like so: > > extension MyType : ConstructibleFromValue<ValueType == V>extension MyType : > (ConstructibleFromValue where ValueType == V) > > Also I thought that this topic does not really belong to generalized > existentials: > > var x: ConstructibleFrom<Float> > > I mean, we specify all the types here, so the compiler should just > specialize the protocol and use it as a normal existential. The only thing > that does not allow us to do that now is syntax. > By comparison, the following typealias does require generalized > existentials, because some associatedtypes, including Iterator, are not > specified: > > typealias GenericCollection<E> = Collection where Iterator.Index == Int, > Element == E > > It also shows that future generalized-existentials syntax will likely be > exactly the same as the one we choose now for protocol specialization. > So we still should think twice before proceeding. We can implement this > proposal now, but do we want to? > > _______________________________________________ > 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