[swift-evolution] [Pitch] range.contains(anotherRange)

Xiaodi Wu xiaodi.wu at gmail.com
Tue Aug 8 22:23:08 CDT 2017


For consistency, the name for this function would be `isSuperset(of:)`, and
it would be equally interesting to have `isStrictSuperset(of:)`,
`isSubset(of:)`, `isStrictSubset(of:)` and `isDisjoint(with:)`--all
currently available for types that conform to `SetAlgebra`.

On Tue, Aug 8, 2017 at 9:40 PM, Yuta Koshizawa via swift-evolution <
swift-evolution at swift.org> wrote:

> 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
>
> _______________________________________________
> swift-evolution mailing list
> 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/20170808/b22248ca/attachment.html>


More information about the swift-evolution mailing list