最近、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 を使用してこのプログラムを作成するにはどうすればよいですか?