2
我正在閱讀"Monad Transformers Step by Step"論文,並通過示例進行討論。GHCI中禁用「非詳盡模式」
在eval0例如,存在在一個case
表達有意非窮舉圖案:
eval0 :: Env -> Exp -> Value
eval0 env (Lit i) = IntVal i
eval0 env (Var n) = fromJust (Map.lookup n env)
eval0 env (Plus e1 e2) = let IntVal i1 = eval0 env e1
IntVal i2 = eval0 env e2
in IntVal (i1 + i2)
eval0 env (Abs n e) = FunVal env n e
eval0 env (App e1 e2) = let val1 = eval0 env e1
val2 = eval0 env e2
in case val1 of
FunVal env' n body ->
eval0 (Map.insert n val2 env') body
是否有任何方式來抑制異常「的情況下,非窮舉的圖案」無添加一個
_ -> error "Error"
到case
的結尾?本文後面的例子展示瞭如何使用單粒變換器來處理這種情況。