Swift 3.1 Released
Used objc a bit; never used swift. Question about this signature:    func drop(while predicate: (Self.Iterator.Element) throws -> Bool) rethrows -> Self.SubSequence

I take it the "throws" on the type of predicate means it can 'throw/return' an error. Why would you do this? Why not just require your predicate function to be able to process any element?Or I am confused?It seems like the equivalent in Go, for example, would be something like this   func drop(seq []T, while func(T) (bool, error)) ([]T, error)

which, again, seems like madness.Or am I confused?