[swift-evolution] [Pitch] Self.withoutSpecialization
T.J. Usiyan
griotspeak at gmail.com
Fri Jul 1 10:56:52 CDT 2016
## The Issue
Given
``` swift
public protocol Zipper1D : CustomStringConvertible {
associatedtype Element
}
```
We can almost write a `flatMap` which keeps the general identity of self
and swaps out the Element in the output.
``` swift
func flatMap<
NewElement, SegmentOfResult : Collection, Output : Zipper1D where
SegmentOfResult.Iterator.Element == NewElement, Output.Element ==
NewElement>
(_ transform: @noescape (Element) throws -> SegmentOfResult)
rethrows -> Output
```
## The Proposal
I propose that we allow `Type.withoutSpecialization`
``` swift
func flatMap<
NewElement, SegmentOfResult : Collection, Output : Zipper1D where
SegmentOfResult.Iterator.Element == NewElement, Output.Element ==
NewElement, Output.withoutSpecialization == Self.withoutSepcialization>
(_ transform: @noescape (Element) throws -> SegmentOfResult)
rethrows -> Output
```
I recognize that generic protocols are another possible solution to this
problem. I am pitching this because of how much closer this idea seems to
being realized.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160701/47739a42/attachment.html>
More information about the swift-evolution
mailing list