일반적인 문장을 사용하는 프로그램을 작성하려고 시도 중입니다. 을 평가하고 각 단계가 평가 될 때이를 보여줍니다. 우리가 할당 문의 순서가있는 경우 예를 들어Haskell의 문장 평가자 추적
, , 그것은으로 실행해야합니다
가 할당 문 1
가 표시 평가 결과 1
이 할당 정책을 평가 평가 2
평가 결과보기 2
지금은 최종 결과 만 보여줍니다. 코드는
> evalS_maybe :: Statement -> Store -> Maybe Store
> evalS_maybe [email protected](While e s1) s = evalS_maybe (If e
> (Sequence s1 (While e s1))
> Skip)
> s
> evalS_maybe Skip s = Just s
> evalS_maybe (Sequence s1 s2) s = do
> sq <-evalS_maybe s1 s
> evalS_maybe s2 sq
> evalS_maybe (Assign x e) s = do
> ag <-evalE_maybe e s
> return (Map.insert x ag s)
> evalS_maybe (If e s1 s2) s = do
> b2 <- evalE_maybe e s
> case b2 of
> BoolVal True -> evalS_maybe s1 s
> BoolVal False -> evalS_maybe s2 s
> _ -> return s
편집이다 :
사용되는 데이터 형식의 나머지 부분은 다음과 같습니다
> type Variable = String
> data Statement =
> Assign Variable Expression
> | If Expression Statement Statement
> | While Expression Statement
> | Sequence Statement Statement
> | Skip
> deriving (Show)
> data Expression =
> Var Variable
> | Val Value
> | Op Bop Expression Expression
> deriving (Show)
> data Bop =
> Plus
> | Minus
> | Times
> | Divide
> | Gt
> | Ge
> | Lt
> | Le
> deriving (Show)
> data Value =
> IntVal Int
> | BoolVal Bool
> deriving (Show)
> type Store = Map Variable Value
아무도 도와 주실 수 있습니까? 미리 감사드립니다.
우리는 유용한 정보를 제공하기 전에'Statement'와'Store'에 대한 데이터 정의를 보여 주어야합니다. –
@ChrisTaylor, 나는 질문을 편집하여 동일하게 추가하려고했습니다. 좀 도와 줄 수있어? 감사. –
직면 한 특정 문제는 무엇입니까? 왜 이럴 수가 없니? 지금 당장 질문은 "내 프로그램이하지 못하는 무언가가 있습니다. 나를 위해 끝낼 수 있습니까?" StackOverflow에 대해서는 좋은 질문이 아닙니다. 더 자세하게 얘기해 주 시겠어요? 너 뭐 해봤 니? –