19

-WallGHCi を使用している場合、プロンプトから (再) ロードするときにオプションを使用する方法を知りたいです。

たとえば、Haskell Programming Tips のセクション 3.3 にあるガード付きの例は次のとおりです。

-- Bad implementation:
fac :: Integer -> Integer
fac n | n == 0 = 1
      | n /= 0 = n * fac (n-1)

-- Slightly improved implementation:
fac :: Integer -> Integer
fac n | n == 0    = 1
      | otherwise = n * fac (n-1)

「最初の問題は、ガード条件が恣意的に複雑になる可能性があるため、このようなガードが網羅的であるかどうかをコンパイラがチェックすることはほとんど不可能であるということです( -Wall オプションを使用するとGHCが警告します)。」

コマンド ラインから入力できることはわかってghci -Wall some_file.hsいますが、プロンプトが表示されると、リロードする場合に警告を確認する方法がわかりません。

これをグーグルで検索しても答えが見つからないようです!

前もって感謝します!

4

1 に答える 1

28

ghci で、次のように入力します。

:set -Wall

すべての警告をオフにしたい場合は、次のことができます

:set -w

(小文字に注意してくださいw。大文字は通常の警告をオンにします。)

ユーザー ガイドでは、動的としてリストされている限り、コマンド プロンプトで任意の ghc コマンド ライン オプションを使用できると記載されています。フラグ リファレンスから、すべての警告設定が動的であることがわかります。

上記の「悪い実装」を使用したセッションの例を次に示します。

Prelude> :l temp.hs
[1 of 1] Compiling Main             ( temp.hs, interpreted )
Ok, modules loaded: Main.
(0.11 secs, 6443184 bytes)

*Main> :set -Wall

*Main> :l temp.hs
[1 of 1] Compiling Main             ( temp.hs, interpreted )

temp.hs:3:1:
    Warning: Pattern match(es) are non-exhaustive
             In an equation for `fac': Patterns not matched: _

Ok, modules loaded: Main.
(0.14 secs, 6442800 bytes)
于 2012-11-08T23:38:47.930 に答える