2

私は「Monad Transformers Step by Step」という論文を読み、例を見ていきます。

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?の終わりまで ErrorTこの論文の後半の例では、モナド変換子を使用してこの状況を処理する方法を示しています。

4

1 に答える 1

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
于 2012-06-12T22:07:54.163 に答える