I'd say that this syntax would be even more coherent with protocol composition, 
given that x is effectively an Int or an Error: 

> var x: Int | Error


But aside from the specific syntax, I'm pretty sure it isn't the first time 
this request comes up and there were good reasons for rejecting it. 

Elia Cereda

> Il giorno 03 nov 2017, alle ore 13:10, Benjamin G via swift-evolution 
> <swift-evolution@swift.org> ha scritto:
> 
> Actually i'd even prefer :
> var x: Int ?? Error
> 
> the spaces makes it more readable, it looks like what you'd do with the ?? 
> operator already, and it seems coherent with the syntax for protocol 
> composition.
> 
> 
> 
> On Fri, Nov 3, 2017 at 12:12 PM, Benjamin G <benjamin.garrig...@gmail.com 
> <mailto:benjamin.garrig...@gmail.com>> wrote:
> Just an idea for the type declaration : 
> 
> Why not use the same ? as Optional, but with the type of the error behind :
> 
> Such as
> 
> var x: Int?Error 
> 
> Optional Int (Int?) would be seen a special case of Result where the error 
> type is nil.
> 
> The advantage of this syntax is that it would let us specify the type of the 
> error if we want it. 
> 
> 
> On Fri, Nov 3, 2017 at 11:45 AM, Nick Keets via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> Right, to me there is not a lot of value in adding Result as it exists in 
> AlamoFire. We will (eventually) use the Swift Package Manager for things like 
> this. The value would be in integrating it like Optionals. e.g. (using a 
> strawman symbol)
> 
>     var x: Int‽ = 5
>     var y: Int‽ = anErrorValue
> 
>     func foo() -> Int‽ { ... }
> 
>     if let x = foo() {
>         // x is Int
>     } else {
>         // somehow access the error
>     }
> 
>     guard let x = foo() else {
>         // Again somehow access the error
>     }
> 
>     func bar() throws -> String { ... }
>     let x = try‽ bar()   // x is String‽
>     let y = x!  // y is String
> 
>     // Possibly even make it throw? (just using a random symbol again)
>     let z = try x¡
> 
> 
> On Fri, Nov 3, 2017 at 2:02 AM, Xiaodi Wu via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> This is clearly a fine addition to the standard library; even Swift's Error 
> Handling Rationale 
> (https://github.com/apple/swift/blob/master/docs/ErrorHandlingRationale.rst 
> <https://github.com/apple/swift/blob/master/docs/ErrorHandlingRationale.rst>) 
> mentions such an addition
> 
> What separates standard library types from other types is that they have 
> language level support, and the wrapping and unwrapping syntax here could 
> definitely benefit from it (`.unwrap()`--which should be `.unwrapped()` 
> incidentally--is so much less elegant in comparison to `?` and `!` for 
> optionals (not that `Result` should use the exact such syntax for a distinct 
> operation)). It would be a shame to transpose a third-party `Result` to the 
> standard library without considering if any such tweaks would substantially 
> improve ergonomics, interconversion with Optional and throws, etc.
> 
> 
> On Thu, Nov 2, 2017 at 1:08 PM, Jon Shier via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> Swift-Evolution:
>       I’ve written a first draft of a proposal to add Result<T> to the 
> standard library by directly porting the Result<T> type used in Alamofire to 
> the standard library. I’d be happy to implement it (type and tests for free!) 
> if someone could point me to the right place to do so. I’m not including it 
> directly in this email, since it includes the full implementation and is 
> therefore quite long. (Discourse, please!) 
> 
> https://github.com/jshier/swift-evolution/blob/master/proposals/0187-add-result-to-the-standard-library.md
>  
> <https://github.com/jshier/swift-evolution/blob/master/proposals/0187-add-result-to-the-standard-library.md>
> 
> 
> Thanks, 
> 
> Jon Shier
> 
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to