次のように、入力に応じてリストの値を変更するための非常に単純な関数をhaskellで記述しようとしています
update_game :: [Int] -> Int -> Int -> [Int]
update_game (x:xs) row take_amnt | row == 1 = x - take_amnt:xs
| row == 2 = x : head(xs) - take_amnt : tail(xs)
| row == 3 = x : head(xs) : last(xs) - take_amnt`
最初の 2 つのケースは問題なく動作しますが、最後のケースでは問題が発生し、その理由がわかりません。エラーは次のとおりです。