on Mon Aug 29 2016, Tim Vermeulen <[email protected]> wrote:
> The intent of my function wasn’t very clear, but it was supposed to
> return a sequence that contains *all* consecutive pairs, i.e. (0 ..<
> 4).pairs would result in [(0, 1), (1, 2), (2, 3)].
extension Sequence {
typealias Element = Iterator.Element
/// All adjacent pairs of elements, in order.
var allAdjacentPairs: UnfoldSequence<(Element, Element), (i: Iterator, e:
Element?)> {
var i = makeIterator()
let e = i.next()
return sequence(state: (i, e)) {
(s: inout (i: Iterator, e: Element?))->(Element, Element)? in
let e = s.i.next()
defer { s.e = e }
return e.map { (s.e!, $0) }
}
}
}
for j in 0..<10 {
print(Array((0..<j).allAdjacentPairs))
}
HTH,
--
-Dave
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution