2016-04-16 2 views
1

Как я могу получить список последовательных пар (кортежей) из списка без рекурсии?Последовательные пары из списка в haskell

Например: [1, 2, 3, 4] будет [(1, 2), (2, 3), (3, 4)]

+0

также, '(\ xs-> [(x, y) | (x: y: _) <- tails xs])'. ['tails'] (http://hackage.haskell.org/package/base-4.8.2.0/docs/Data-List.html#v:tails) определяется с рекурсией, но тогда это' zip'. –

ответ

7

\xs -> zip xs $ tail xs или zip <*> tail.

+2

Последнему лучше написать 'zip <*> tail'. Я на самом деле не большой поклонник этих функциональных хакеров, но я должен признать, что это довольно мило. – leftaroundabout

+0

Он не сохраняет никаких скобок здесь, так что whatevz, но уверен. – Gurkenglas

+2

'ap' несколько устарел, так как' Applicative' является суперклассом «Monad» (по крайней мере, в GHC и при условии, что он принят стандартом Haskell 2014). – chepner

Смежные вопросы