私は次の機能を持っています:
-- xs: list to be changed
-- ws: list of indices where the values will change to 0
replaceAtIndices xs ws = [if (fromJust (elemIndex x xs)) `elem` ws then 0 else x | x <- xs]
この関数は2つのリストを取ります。wsは、0に変更したいxsの値のインデックスです。
何らかの理由で、それはある場合には機能し、他の場合には機能しません:
*Main> replaceAtIndices [1,2,3,4] [2,3]
[1,2,0,0]-正解
*Main> replaceAtIndices [1,2,3,4] [2]
[1,2,0,4]-正解
*Main> replaceAtIndices [1,1,2,1,3] [3]
[1,1,2,1,3]-[1,1,2,0,3]である必要があります
誰かがこれがなぜであるか説明できますか?
前もって感謝します!