2012-06-12 48 views
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的結尾?本文後面的例子展示瞭如何使用單粒變換器來處理這種情況。

回答

3

是的!只需在文件頂部添加適當的編譯指示來抑制不需要的警告。

{-# OPTIONS_GHC -fno-warn-incomplete-patterns #-} 

你可以找到如何個別警告關閉,像這樣

bash> man ghc | grep no-warn 

顯然的完整列表,(我認爲),你也可以通過-fno-warn-incomplete-patterns當您啓動ghci的

bash> ghci -Wall -fno-warn-incomplete-patterns myfile.hs