[swift-evolution] [Pitch] Self.withoutSpecialization
T.J. Usiyan
griotspeak at gmail.com
Sat Jul 2 11:50:53 CDT 2016
I periodically kill all hope that we might get higher-kinded-types, just to
remain sane.
It's interesting that you would make them sound like a possibility though,
since Mr Widmann said something about you declaring them intractable for
some reason or another.
Well, this attempt to get them by hook or crook failed, but I won't let
that get me down. No. No I won't.
On Sat, Jul 2, 2016 at 11:40 AM, Dave Abrahams via swift-evolution <
swift-evolution at swift.org> wrote:
>
>
> on Fri Jul 01 2016, "T.J. Usiyan via swift-evolution" <
> swift-evolution at swift.org> wrote:
>
> > Bump
> >
> > On Fri, Jul 1, 2016 at 11:56 AM, T.J. Usiyan
> > <griotspeak at gmail.com> wrote:
> >
> >>
> >>
> >> ## 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.
>
> The right answer to this problem is something called “higher-kinded
> types,” which are interesting to contemplate for the future, but most
> definitely out-of-scope at the moment.
>
> Cheers,
>
> --
> -Dave
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160702/2049d5e1/attachment.html>
More information about the swift-evolution
mailing list