[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