[swift-evolution] allowing to specify optionality with type inference

Hugues Bernet-Rollande hugues at xdev.fr
Thu Mar 24 05:57:52 CDT 2016


Hey All,

  

I think Andrew already nailed my proposal.

  

Thank you all.

  

  

Hugues BERNET-ROLLANDE

  

\--

hugues at xdev.fr

http://www.xdev.fr

http://www.linkedin.com/in/huguesbr

> On Mar 24 2016, at 11:56 am, Dan Raviv <dan.raviv at gmail.com> wrote:  

>

> Hi Hughes,

>

>  

>

> What's wrong with:  
let s = Optional(String("abc"))  

>

>  

>

>  

>

> On Thu, Mar 24, 2016 at 12:22 PM, Hugues Bernet-Rollande via swift-evolution
<[swift-evolution at swift.org](mailto:swift-evolution at swift.org)> wrote:  

>

>> In a strongly typed language, such as Swift is, type inference is greatly
appreciated as it declutter the instance type definition.

>>

>>  

>>

>> For example, in the following statement, the compiler easily deduct the
type of `aString` by the return type of `String.init()`

>>

>>  

>>

>> ```

>>

>> let aString = String()

>>

>> ```

>>

>>  

>>

>> Optional are generic enum which can contain a value of a generic type or
nil (<https://github.com/apple/swift/blob/master/stdlib/public/core/Optional.s
wift>)

>>

>>  

>>

>> Sometime you may want specify that the instance is of type optional in
which even if you are a the same time assigning a value to this instance.

>>

>> In which case you loose the type inference mechanism and you have to define
both (the optionality as well as the type).

>>

>> For example, you may want specify an optional String with a default value.

>>

>>  

>>

>> ```

>>

>> var a:String? = String()

>>

>> // or

>>

>> var b = String() as String?

>>

>> // or

>>

>> var c:Optional&lt;String&gt; = String()  

>>

>> ```

>>

>>  

>>

>> But the compiler can already infer the variable type from this assignment,
it just miss the "optionality" of the variable.

>>

>> It would be nice to be able to express this.

>>

>>  

>>

>> Then for, I propose the following syntax evolution:

>>

>>  

>>

>> ```

>>

>> var a:? = String()

>>

>> // and/or (not recommended because more prone to typo and unclear...)

>>

>> var a = String() as?

>>

>> ```

>>

>>  

>>

>> This would allow for more synthetic optional declaration.

>>

>>  

>>

>> I've draft a proposal on my `swift-evolution` fork:

>>

>> <https://github.com/huguesbr/swift-evolution/blob/optionality-type-with-
type-inference/proposals/0057-optionality-type-with-type-inference.md>

>>

>>  

>>

>> Let me know what you think.

>>

>>  

>>

>>  

>>

>> Hugues BERNET-ROLLANDE

>>

>>  

>>

>> \--

>>

>> [hugues at xdev.fr](mailto:hugues at xdev.fr)

>>

>> <http://www.xdev.fr>

>>

>> <http://www.linkedin.com/in/huguesbr>

>>

>>  
_______________________________________________  
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/20160324/755dfeba/attachment.html>


More information about the swift-evolution mailing list