2016-04-16 5 views
1

Wie kann ich eine Liste von aufeinander folgenden Paaren (Tupel) aus einer Liste ohne Rekursion bekommen?Fortlaufende Paare aus der Liste in Haskell

Zum Beispiel: [1, 2, 3, 4] würde [(1, 2), (2, 3), (3, 4)]

+0

auch, '(\ xs-> [(x, y) | (x: y: _) <- Schwänze xs])'. ['tails'] (http://hackage.haskell.org/package/base-4.8.2.0/docs/Data-List.html#v:tails) wird mit Rekursion definiert, aber dann auch' zip'. –

Antwort

7

\xs -> zip xs $ tail xs oder zip <*> tail sein.

+2

Letzteres wäre besser geschrieben "zip <*> Schwanz". Ich bin eigentlich kein großer Fan von diesen Funktion-Funktor-Hacks, aber ich muss zugeben, dass dies hier ziemlich nett ist. – leftaroundabout

+0

Es spart hier keine Klammern also whatevz aber sicher. – Gurkenglas

+2

'ap' ist jetzt etwas veraltet, da' Applicative' eine Oberklasse von 'Monad' ist (zumindest in GHC, und angenommen, dass es durch den Haskell-Standard 2014 übernommen wurde). – chepner