on Sat Mar 11 2017, Karl Wagner <swift-evolution@swift.org> wrote: >> On 12 Mar 2017, at 06:51, Austin Zheng <austinzh...@gmail.com> > wrote: >> >> I think you want higher-kinded >> types. >> https://github.com/apple/swift/blob/master/docs/GenericsManifesto.md#higher-kinded-types >> <https://github.com/apple/swift/blob/master/docs/GenericsManifesto.md#higher-kinded-types> > >> >> Best, >> Austin >> >>> On Mar 11, 2017, at 9:49 PM, Karl Wagner via swift-evolution >>> <swift-evolution@swift.org >>> <mailto:swift-evolution@swift.org>> >>> wrote: >>> >>> I have a model like this: >>> >>> protocol Promise { >>> associatedtype Result >>> } >>> >>> protocol Scanner { >>> associatedtype ScanPromise: Promise >>> >>> func promiseScan<T>(from: Offset, until: (Offset, Item) -> T?) -> >>> ScanPromise // where Result == T? >>> } >>> >>> The thing that I’m trying to express is: whichever type implements >>> the associated type ‘ScanPromise’ must be generic, and that >>> parameter must be its result (i.e. something it got as a result of >>> calling the “until” closure). >>> >>> Even with SE-0142, this kind of constraint would not be possible. What I >>> would like to write is something like this: >>> >>> protocol Promise { >>> associatedtype Result >>> } >>> >>> protocol Scanner { >>> associatedtype ScanPromise<T>: Promise // now generic. [SE-0142]: where >>> Result == T >>> >>> func promiseScan<T>(from: Offset, until: (Offset, Item) -> T?) -> >>> ScanPromise<T> >>> } >>> >>> Thoughts? >>> >>> - Karl >>> _______________________________________________ >>> swift-evolution mailing list >>> swift-evolution@swift.org >>> <mailto:swift-evolution@swift.org> >>> https://lists.swift.org/mailman/listinfo/swift-evolution >> > > Not necessarily. Higher-kinded types (IIUC) are per-instance - > e.g. every instance of a Collection could have a unique type of Index.
No, that's “dependent types.” Austin had it right. -- -Dave _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution