An elegant way of creating a Scala sequence that comprises lagged tuples

scala, seq, tuples

Solution

The easiest way to do this is by using the `tail` and `zip`:

val xs = Seq('A', 'B', 'C', 'D', 'E')
xs zip xs.tail

If efficiency is a concern (i.e. you don't want to create an extra intermediate sequence by calling `tail` and the `Seq` you use are not `List`s, meaning that `tail` takes O(n)) then you can use views:

xs zip xs.view.tail

Problem

I want to create a Scala sequence comprising tuples. The input is a text file like this: ``` A B C D E ``` I'm looking for an elegant way to construct "lagged" tuples like this: ``` (A, B), (B, C), (C, D), (D, E) ```

Original source