[swift-evolution] rethrows as first-class type annotation
John McCall
rjmccall at apple.com
Tue Dec 22 11:41:40 CST 2015
> On Dec 21, 2015, at 6:09 PM, Jordan Rose <jordan_rose at apple.com> wrote:
> John, IIRC you had some reason why this wasn't a great idea, but I can't remember it. It seems useful to me too, if not something that comes up too often.
I don’t remember off-hand. I think it’s theoretically supportable, but it adds extra complexity to the type system that I wanted to avoid if possible.
John.
>
> Jordan
>
>> On Dec 20, 2015, at 2:46 , Alexandre Lopoukhine via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>
>> Hi Dmitri,
>>
>> This is a better example than any that I have come up with so far as to why “rethrows” should be a part of the signature. You shouldn’t have to use “try!” to apply a non-throwing function, like {print($0)} to “forEach”.
>>
>> — Sasha
>>
>>
>>> On 20 Dec 2015, at 13:37, Dmitri Gribenko <gribozavr at gmail.com <mailto:gribozavr at gmail.com>> wrote:
>>>
>>> Hi Alexandre,
>>>
>>> I think for this use case we don't actually need 'rethrows' to become
>>> a part of the closure type, we just need the compiler to allow and
>>> "instantiate" it in more places.
>>>
>>> The case where we would need 'rethrows' to become a first class part
>>> of the type system is if we wanted 'rethrows' to be a part of the
>>> signature of the closure itself, for example:
>>>
>>> (swift) let forEach = [ 10, 20, 30 ].forEach
>>> // forEach : (@noescape (Int) throws -> Void) throws -> () = (Function)
>>>
>>> Here, a more precise type would be (@noescape (Int) throws -> Void)
>>> rethrows -> Void.
>>>
>>> Dmitri
>>>
>>> --
>>> main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
>>> (j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com <mailto:gribozavr at gmail.com>>*/
>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto: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/20151222/737d5b28/attachment.html>
More information about the swift-evolution
mailing list