Just spit-balling here, but couldn’t you do this with a generic extension on 
Optional?

> extension Optional {
>     func returnsNil(errorCode: Int) -> Wrapped? {
>         logError(errorCode)
>         return nil
>     }
> }



Jeff Kelley

[email protected] | @SlaunchaMan <https://twitter.com/SlaunchaMan> | 
jeffkelley.org <http://jeffkelley.org/>
> On Jan 3, 2016, at 10:43 PM, Andrew Duncan via swift-evolution 
> <[email protected]> wrote:
> 
> It should be possible to declare a function that returns only nil, and have 
> its return type be substitutable for any function that returns and Optional. 
> This is something like having a bottom type but not really. What I mean is:
> 
> func returnsNil(errCode:Int) -> nil {
>    logError(errCode)     // A side-effect. Not FP, sosumi.
>    return nil
> }
> 
> func returnAOptional() -> A? {
>    // Bla bla. We discover an error so we decide to bail and return nil.
>    return returnsNil(errCode) // Would be legal.
> }
> func returnsBOptional() -> B? {
>    // Bla bla. We discover an error so we decide to bail and return nil.
>    return returnsNil(errCode)  // Would also be legal.
> }
> 
> I seek a return type that conforms to any Optional -- I think that implies it 
> *must* (or correct me here) be nil.
> 
> Now perhaps this is already possible with wizardry from the Next Level. 
> (There always is one.)
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to