> On 15 Mar 2016, at 15:48, Lorenzo Racca <lorenzo.ra...@live.it> wrote:
>
> I already knew the impossibility of applying such a predicate as “$0 == 3”
> and I actually couldn’t quite figure out a solution.
I thought so, and I don’t think there is a way to do it, my point was really
just that your swift doc comments weren’t clear on that point, then I went off
at a bit of a tangent ;)
> On 15 Mar 2016, at 17:07, Jeff Hajewski <jeff.hajew...@gmail.com> wrote:
>
> /// Returns an index such that each element at or above the index is
> partitioned from below by the partition predicate
> ///
> /// - Parameter partitionPredicate: The partioning predicate returns
> `true` for elements in the collection that are
> /// ordered below, with respet to the
> partitioning predicate.
> /// - Complexity: O(lg(n))
> ///
> /// - Returns: An index such that each element at or above the returned
> index evaluates as `false` with respect to `partitionPredicate(_:)`
> @warn_unused_result
> func lowerBound(@noescape partitionPredicate: Self.Generator.Element ->
> Bool) -> Index {
Should probably have "requires: Collection is sorted" or such, as a binary
search can’t really guarantee correct behaviour otherwise, no matter what your
predicate is. I also kind of prefer a name of isOrderedBefore for the
predicate; it matches .sort() and is very specific about what it does.
>
> /// Returns an index such that each element below the index is strictly
> less than the partition predicate
> ///
> /// - Parameter partitionPredicate: The partioning predicate. Returns
> `true` for elements in the collection that are
> /// ordered below, with respet to the
> partitioning predicate.
> /// - Complexity: O(lg(n))
> ///
> /// - Returns: An index such that each element evaluates as `false` with
> respect to `partitionPredicate(_:)`
> @warn_unused_result
> func upperBound(@noescape partitionPredicate:Self.Generator.Element ->
> Bool) -> Index {
Did you mean “each element above the returned index evaluates as false"?
Implementation wise they seem fine, but I think that for correctness you should
be using .successor() and .advancedBy(), as not all indexes are numeric.
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution