2016-04-16 7 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

ここでは角括弧は保存されませんので、必ず確認してください。 – Gurkenglas

+2

'Appl'は' Monad'のスーパークラスです(少なくともGHCでは、それがHaskell 2014標準で採用されていると仮定しています)。 – chepner

関連する問題