3
私はHaskellの評価者をシミュレートしています。シンプルなはずですが、デバッグできませんでした。評価者をシミュレートします
type State = String -> Int
extend :: State -> String -> Int -> State
extend base key val = \x -> if key == x
then val
else base key
empty :: State
empty = \x -> 0
:
base
環境に
Iは、ルックアップ機能(
String -> Int
)、初期状態(
empty
は、例外変数が
0
を評価)として
State
を定義ここで
、およびextend
は、新しいキーを追加します(そして、それは値です)
aState = extend empty "A" 5
bState = extend aState "B" 4
cState = extend bState "C" 3
私はcState
機能と同等でなければならないこととします:
は、私はプログラムをテストするとき
\x -> if x == "C"
then 3
else if x == "B"
then 4
else if x == "A"
then 5
else 0
代わりに、cState "B" == 0
とcState "A" == 0
が得られます。
私はextend
で何が問題なのか分かりませんが、誰かが私に説明できますか?