[swift-evolution] [Pitch] Move @noescape

Howard Lovatt howard.lovatt at gmail.com
Thu Mar 3 16:05:33 CST 2016


Good idea. The annotation is associated with the type not with the name or
label.

On Friday, 4 March 2016, Chris Lattner via swift-evolution <
swift-evolution at swift.org> wrote:

> Chris Eidhof noticed an emergent result of removing our currying syntax:
> it broke some useful code using @noescape, because we only allowed it on
> parameter declarations, not on general things-of-function-type.  This meant
> that manually curried code like this:
>
> func curriedFlatMap<A, B>(x: [A]) -> (@noescape A -> [B]) -> [B] {
>     return { f in
>         x.flatMap(f)
>     }
> }
>
> Was rejected.  Fixing this was straight-forward (
> https://github.com/apple/swift/commit/c3c6beac72bc0368030f06d52c46b6444fc48dbd),
> but required @noescape being allowed on arbitrary function types.  Now that
> we have that, these two declarations are equivalent:
>
>         func f(@noescape fn : () -> ()) {}
>         func f(fn : @noescape () -> ()) {}
>
> I propose that we remove the former syntax, migrating code to the later
> form.  This leads to better consistency between our declarations and types,
> and follows the precedent of inout.  @autoclosure should also probably move
> as well.
>
> Thoughts?
>
> -Chris
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org <javascript:;>
> https://lists.swift.org/mailman/listinfo/swift-evolution
>


-- 
-- Howard.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160304/640c3cdb/attachment.html>


More information about the swift-evolution mailing list