どのようにして、反復せずにリストから連続するペア(タプル)のリストを取得できますか?例えばhaskellのリストからの連続するペア
:[1, 2, 3, 4]
は[(1, 2), (2, 3), (3, 4)]
どのようにして、反復せずにリストから連続するペア(タプル)のリストを取得できますか?例えばhaskellのリストからの連続するペア
:[1, 2, 3, 4]
は[(1, 2), (2, 3), (3, 4)]
\xs -> zip xs $ tail xs
又はzip <*> tail
あろう。
後者は 'zip <*> tail'と書かれている方がよいでしょう。私は実際にはこれらのファンクション・ファンクター・ハッキングの大ファンではありませんが、ここではこれがかなりいいと認めなければなりません。 – leftaroundabout
ここでは角括弧は保存されませんので、必ず確認してください。 – Gurkenglas
'Appl'は' Monad'のスーパークラスです(少なくともGHCでは、それがHaskell 2014標準で採用されていると仮定しています)。 – chepner
また、 '(\ 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'も同様です。 –