私は計算を実行するための時間で2つの要素を抽出したいリスト let a = [1,2,3,4]
ハスケル:リストの印刷要素
を持っています。誰が私にこれを達成する方法を教えてもらえますか?私はハスケルには新しいです。
私はtake 2 a
を知っています。しかし、どのようにしてこれをループに入れて、一度に2つの要素が抽出されるようにすることができます。私は混乱しています。
私は計算を実行するための時間で2つの要素を抽出したいリスト let a = [1,2,3,4]
ハスケル:リストの印刷要素
を持っています。誰が私にこれを達成する方法を教えてもらえますか?私はハスケルには新しいです。
私はtake 2 a
を知っています。しかし、どのようにしてこれをループに入れて、一度に2つの要素が抽出されるようにすることができます。私は混乱しています。
はあなたが興味のある要素に独自の再帰関数とパターンマッチングを書き込むことができます。
f (a:b:list) = doSomeThingWith a b : f list
が正しく[]
と[a]
例に一致することを確認します。
例を示します。あなたはmap
機能に精通している(またはになる必要があります):
map :: (a -> b) -> [a] -> [b]
map f [] = []
map f (x:xs) = f x : map f xs
、あなたはの引数をとる関数を持って、そして時にリストから二つの要素に適用することができます。 map
のように動作するが、引数が2つの関数を持つ関数mapTwo
があります。簡単にするため、リストには偶数の要素があると仮定します。
mapTwo :: (a -> a -> b) -> [a] -> [b]
mapTwo f [] = []
mapTwo f (x1:x2:xs) = f x1 x2 : mapTwo f xs
'mapTwo [x] = error"の大文字小文字にするべきではありません "シングルトンリストは許されません"? – epsilonhalbe
私の最後の文章を見てください。私はちょうど奇数の値を持つリストをどのように扱うかを考えたくありませんでした。 – chepner
むしろ、私は 'Maybe'や' Either'を使って、エラーを起こしたり、例外モナドを使ったりして、部分的な機能の長所と短所を出したくありませんでした。 – chepner
[ 'splitAt'](https://hackage.haskell.org/package/base-4.9.0.0/docs/Prelude.html#v:splitAt)関数または[' chunksOfを見てください'](https://hackage.haskell.org/package/split-0.2.3.1/docs/Data-List-Split.html#v:chunksOf) – ErikR
ありがとうございます。しかし、次にタプルをループして実行する必要があります計算?? –
再帰あり。 –