[swift-evolution] Allowing non-binding pattern matching as a Bool expression?

Alex Lew alexl.mail+swift at gmail.com
Mon Dec 7 22:05:51 CST 2015


Hi all,

Curious to hear thoughts on allowing non-binding pattern matches to be used
as boolean values outside of an if, guard, for...in, while, switch, etc.
Something like:

enum List<T> {
     case Empty
     indirect case Link(T, List<T>)

     func isEmpty() -> Bool {
          return case .Empty = self
     }
}

It gets rid of some boilerplate (explicit return true and return false),
and seems intuitive that it would work given that you can already do

if case .Empty = self {
     return true
} else {
     return false
}

I haven't really thought through all the implications here, so there's
probably something I'm missing. It also may be useful only in such limited
situations that it's not worth the trouble to add.

-Alex
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151207/87481738/attachment.html>


More information about the swift-evolution mailing list