リストを受け取る関数があり、リストに2つの同一の連続した数字があり、リストの他の場所に数字xがある場合、それは同等であり、xを0に変更し、リストを返します。
twoAdjThenThirdZero (x:y:xs) = [if x == y && x `elem` xs then 0 else x | x <- xs]
何らかの理由で、実行しようとするたびにリストの最初の 2 つの要素が省略されています。
*Main> twoAdjThenThirdZero [2,3,4,1,2,0,2,3,3]
[4,1,2,0,2,0,0]
また、上記のケースは、私が望むこととは逆のことをしています。リストの最後にある 2 つの 3 を保持し、2 番目の要素であるその 3 を 0 にしたいのですが、それが逆になりました。
*Main> twoAdjThenThirdZero [2,2,3,1,2,4]
[3,1,0,4]
これがなぜなのか誰か知っていますか?前もって感謝します!