次のような単純な状態のセットがあります。
st1 = [("x", 2), ("y", 3), ("z", 3)]
値が変わるため、プログラムの実行時にこれを更新したいと思います。次のような更新コードがあります。
update str val st = (str, val) : foldr step [] st where
step x acc
| fst x == str = acc
| otherwise = x:acc
次のような割り当て関数を作成したいと思います。
assign (str, val) env = update str val env
私が抱えている問題は、Haskell には副作用がないため、更新されたリストが更新されないことです。これを行う方法に関するアイデアや提案はありますか?
インタープリターを入力すると
let st2 = update "x" 1 st1
次に、新しい状態が保存されます。
関数でこれを行いたい:
update "x" 1 st1
Before: [("x",1),("y",3),("z",3)]
After: [("y",1),("x",2),("z",3)]