Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 从GHCi提示符加载时发出警告_Haskell_Warnings_Ghci - Fatal编程技术网

Haskell 从GHCi提示符加载时发出警告

Haskell 从GHCi提示符加载时发出警告,haskell,warnings,ghci,Haskell,Warnings,Ghci,使用GHCi时,我想知道从提示符(重新)加载时如何使用-Wall选项 例如,第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

使用GHCi时,我想知道从提示符(重新)加载时如何使用
-Wall
选项

例如,第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
,但一旦出现提示,我就不确定如何检查是否要重新加载警告

在尝试谷歌搜索后,我似乎找不到答案

提前谢谢

在ghci中,输入

:set -Wall
如果您想关闭所有警告,您可以这样做

:set -w
(请注意,小写的
w
。将启用大写的“正常警告”。)

在文章中,我们可以在命令提示符下使用任何ghc命令行选项,只要它们被列为动态选项,并且我们可以从中看到所有警告设置都是动态的

下面是一个示例会话,使用上面的“错误实现”:


为方便起见,您可以将其放入
.ghci
文件中。我有
:set-Wall\n:set-fno-warn类型默认值\n:set-fno-warn unused do bind
来打开除恼人的警告之外的所有警告。如果您第一次设置
-Wall
,我想它也会为任何重新加载保持设置。。。
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)