nil is not only usable with Optionals, although that is its most common usage.
Any type implementing NilLiteralConvertible can be initialized with a nil literal -DW > On Jun 8, 2016, at 10:45 AM, Brandon Knope via swift-evolution > <swift-evolution@swift.org> wrote: > > This is precisely the point I was trying to make. > > “nil” is a holdover from other languages; i.e. we are comfortable with using > it. I think there are better alternatives to consider. > > However, when evaluating whether it makes sense with swift, I think it fails > some of the criteria for inclusion. > > My biggest bet why people are against .none is that the . looks noisy and > unclean. This is why I am suggesting “none” as sugar for .none even though it > might seem quite silly. > > I also bet that 9 times out of 10, when people see nil they think of pointers > and not optionals. Maybe this will take time to retrain ourselves to think > optionality, but now nil is used for different things in different languages > > Brandon > >> On Jun 8, 2016, at 10:56 AM, Vladimir.S via swift-evolution >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: >> >> Reading the thread.. I wonder if we need "nil" at all, why not use (just a >> question, not a suggestion) .none ? I.e. now we can use nil and .none in the >> same situations, .none is just 2 symbols longer, '.none' highlight that >> Optional is a special type (that there is .some(T) in Optional), no >> confusion if it is related to pointers etc. >> >> var i : Int? = 10 >> if i != .none { print(i) } >> i = .none >> print(i) >> >> var i : Int? = 10 >> if i != nil { print(i) } >> i = nil >> print(i) >> >> i.e. the same thing expressed in 2 different but similar ways. Probably I'm >> missing something. >> >> On 08.06.2016 12:33, J. Charles M. N. via swift-evolution wrote: >>> I'am not either for removing nil nor renaming it none, I think that they >>> are conceptually different things. >>> >>> This syntactic sugar brings unfortunately many things around. One >>> fastidious thing is it multiple semantics: As null pointer. As none value. >>> I am personally not favorable for multiples semantics keywords. >>> >>> Aside, if it come up to revisiting nil concept we should bring the other >>> chimera (unit, Void, bottom type etc). >>> >>> -- >>> J. Charles >>> >>> Le 8 juin 2016 à 04:18, Muse M via swift-evolution >>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org> >>> <mailto:swift-evolution@swift.org <mailto:swift-evolution@swift.org>>> a >>> écrit : >>> >>>> None would be similar to Null or nothing about the types in that sense >>>> which None is not a type. >>>> Nil would be interpret as Int, Float, String, etc >>>> >>>> >>>> >>>> On Wed, Jun 8, 2016 at 9:17 AM, Dany St-Amant via swift-evolution >>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org> >>>> <mailto:swift-evolution@swift.org <mailto:swift-evolution@swift.org>>> >>>> wrote: >>>> >>>> No clue as to the origins, but if you insist on using none. you can do: >>>> >>>> let a : Int? = .none >>>> let b : Int? = .some(5) >>>> >>>> Using the simpler >>>> >>>> let a : Int? = nil >>>> let b : Int? = 5 >>>> >>>> is just sugar. >>>> Maybe it was foresight to prevent people from saying, if I can do: >>>> >>>> let a : Int? = none >>>> >>>> Why can't I do: >>>> >>>> let b : Int? = some(5) >>>> >>>> And then go a step further by asking for all enum to be access >>>> without the leading dot; scary thought. >>>> >>>> So it may be better to stick with '.none' and sugared 'nil'. >>>> >>>> Dany >>>> >>>> Le 7 juin 2016 à 20:16, Brandon Knope via swift-evolution >>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org> >>>> <mailto:swift-evolution@swift.org <mailto:swift-evolution@swift.org>>> a >>>> écrit : >>>> >>>>> That's exactly the point I was going for. >>>>> >>>>> none makes more sense in this context than nil in my opinion >>>>> >>>>> Brandon >>>>> >>>>> On Jun 7, 2016, at 8:10 PM, Saagar Jha <saagarjh...@gmail.com >>>>> <mailto:saagarjh...@gmail.com> >>>>> <mailto:saagarjh...@gmail.com <mailto:saagarjh...@gmail.com>>> wrote: >>>>> >>>>>> Well, some is the opposite of none in that if I don’t have some, I >>>>>> have none. nil is just a carry-over from Objective-C. >>>>>> >>>>>> On Tue, Jun 7, 2016 at 5:07 PM Brandon Knope via swift-evolution >>>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org> >>>>>> <mailto:swift-evolution@swift.org <mailto:swift-evolution@swift.org>>> >>>>>> wrote: >>>>>> >>>>>> I guess for me it comes down to this: >>>>>> >>>>>> *Why were some and none chosen for as the cases for Optional?* >>>>>> >>>>>> As an extension of that, why does nil then represent none >>>>>> instead of the obvious none? >>>>>> >>>>>> There has to be a reason why it's not: >>>>>> >>>>>> enum Optional<T> { >>>>>> case some(T) >>>>>> case nil >>>>>> } >>>>>> >>>>>> None seems a lot more expressive and consistent with Optional. >>>>>> >>>>>> I am comfortable and use to nil, but with swift being a new >>>>>> language, I thought it was worth opening up a discussion about >>>>>> possibly changing direction a little here. >>>>>> >>>>>> Thanks, >>>>>> Brandon >>>>>> >>>>>> On Jun 7, 2016, at 7:57 PM, Jordan Rose <jordan_r...@apple.com >>>>>> <mailto:jordan_r...@apple.com> >>>>>> <mailto:jordan_r...@apple.com <mailto:jordan_r...@apple.com>>> >>>>>> wrote: >>>>>> >>>>>>> There are NilLiteralConvertible types other than Optional, but >>>>>>> they’re dwindling now that pointer nullability is represented >>>>>>> by Optional. That said, I’m not convinced renaming “nil” is >>>>>>> worth it at this point. Similarity with other languages is >>>>>>> still a good thing. >>>>>>> >>>>>>> It’s true that we might not have picked nil if it hadn’t been >>>>>>> for Objective-C, but that doesn’t make it an invalid choice. >>>>>>> There are lots of things in Swift we might have done >>>>>>> differently if it weren’t for Objective-C and Cocoa. >>>>>>> >>>>>>> Jordan >>>>>>> >>>>>>> >>>>>>>> On Jun 5, 2016, at 12:35, Brandon Knope via swift-evolution >>>>>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org> >>>>>>>> <mailto:swift-evolution@swift.org >>>>>>>> <mailto:swift-evolution@swift.org>>> wrote: >>>>>>>> >>>>>>>> Quick thought: >>>>>>>> >>>>>>>> If optional has a .none case, wouldn't it be more consistent >>>>>>>> to rename nil to none? >>>>>>>> >>>>>>>> Also, would nil make it into Swift if not for other languages? >>>>>>>> >>>>>>>> It also might make it somewhat clearer: >>>>>>>> >>>>>>>> var someInt: Int? = none //looks less like a pointer and more >>>>>>>> like a value of nothing >>>>>>>> >>>>>>>> 1. It is more consistent with the optional enum >>>>>>>> 2. The intent is arguably clearer >>>>>>>> 3. nil makes it seem like it's a pointer >>>>>>>> 4. Would nil be included if not for prior languages? Would >>>>>>>> "none" have been chosen as the keyword if nil wasn't prior art? >>>>>>>> >>>>>>>> One disadvantage is how close it is to .none, but with how >>>>>>>> common nil/none is used, some syntactic sugar might make it >>>>>>>> look nicer than always having the stray . >>>>>>>> >>>>>>>> On vacation from Orlando, poolside, with a quick thought, >>>>>>>> Brandon >>>>>>>> _______________________________________________ >>>>>>>> swift-evolution mailing list >>>>>>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org> >>>>>>>> <mailto: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> >>>>>> <mailto: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> >>>>>> >>>>>> -- >>>>>> -Saagar Jha >>>>> _______________________________________________ >>>>> swift-evolution mailing list >>>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org> >>>>> <mailto: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> >>>> <mailto: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> >>>> <mailto: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 >>> >> _______________________________________________ >> 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
signature.asc
Description: Message signed with OpenPGP using GPGMail
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution