0

最近、Foldr を使用して問題を解決しようとしています。タスクは次のとおりです。

In:[5,1,3,8,2,4,7,1]
Out:[16,8]

つまり、入力リストの奇数インデックス位置と偶数桁にある要素を 2 倍にします。次のfoldrを使用せずにプログラムを作成しました:(パター​​ンマッチの失敗を示しています:head [])

findPos list elt =
  map fst $ filter ((elt==).snd) $ zip [0..] list

doublePos [] = []
doublePos (x:xs)
  | ((head(findPos xs x)`mod` 2) /= 0) && (x `mod` 2 == 0) =
      [2*x] ++ doublePos xs
  | otherwise = doublePos xs

folderr を使用してこのプログラムを作成するにはどうすればよいですか?

4

2 に答える 2