[swift-evolution] [Pitch] range.contains(anotherRange)
Yuta Koshizawa
koher at koherent.org
Tue Aug 8 21:40:21 CDT 2017
Hi,
Recently I needed to implement `contains` methods to check if a range
contains another range. I think those are basic operations and suitable for
the standard library.
Although it may seem easy to implement such `contains` methods whenever we
need them, their precise specifications are too complicated to do so.
e.g.
let a: ClosedRange<Int> = 2...7
a.contains(3...5) // `true`
a.contains(3...7) // also `true`
a.contains(3..<8) // still `true` because all values contained in `3..<8`
are also in `a`
a.contains(3..<9) // `false`
let b: ClosedRange<Float> = 2...7
b.contains(3...5) // `true`
b.contains(3...7) // `true`
b.contains(3..<8) // `false` because { x | 7.0 < x < 8.0 } is not contained
in `a`
let c: Range<Float> = 2..<7
c.contains(3...5) // `true`
c.contains(3..<7) // `true`
c.contains(3...7) // `false` because 7.0 is not contained in `a`
My experimental implementation is here:
https://github.com/koher/range-contains
(Currently does not support one-sided ranges)
What are your thoughts about them?
--
Yuta
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170809/71d146bc/attachment.html>
More information about the swift-evolution
mailing list