3
저는 하스켈과 함께 평가자를 시뮬레이션 중입니다. 그것은 간단해야하지만 디버깅 할 수 없습니다.평가자 시뮬레이트
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
의 문제점을 알 수 없습니까? 누군가 나에게 설명 할 수 있습니까?