Haskell 如何让Haskero在非穷举模式匹配时发出警告
我目前正在VisualStudio代码中评估作为Haskell编辑器的替代品,而不是Atom。到目前为止,Haskero似乎很有希望,但我错过了Atom Haskell通常给出的编译器警告 作为一个解释问题的方法,考虑一下这个简单的例子: 复制步骤Haskell 如何让Haskero在非穷举模式匹配时发出警告,haskell,visual-studio-code,intero,haskero,Haskell,Visual Studio Code,Intero,Haskero,我目前正在VisualStudio代码中评估作为Haskell编辑器的替代品,而不是Atom。到目前为止,Haskero似乎很有希望,但我错过了Atom Haskell通常给出的编译器警告 作为一个解释问题的方法,考虑一下这个简单的例子: 复制步骤 打开已安装Haskero的Visual Studio代码 添加新的Haskell文件:Repro.hs 将以下内容添加到文件中 按保存 文件内容: module Repro where foo :: Maybe a -> a foo (Jus
Repro.hs
module Repro where
foo :: Maybe a -> a
foo (Just x) = x
预期行为
编辑应就以下内容发出警告:
Pattern match(es) are non-exhaustive
In an equation for `foo': Patterns not matched: Nothing
Atom Haskell就是这样做的
实际行为
什么也没发生。“问题”视图仅指出:
到目前为止,尚未在工作区中检测到任何问题
更多细节
上面的复制步骤是我能想到的最简单的步骤,但是当我创建一个完整的堆栈项目并确保在项目目录的根目录中运行了Stack build intero
时,我看到了相同的(缺少)行为
我的环境是:
- Windows 10 Pro x64
- 堆栈版本1.6.3,Git版本b27e629b8c4ce369e3b8273f04db193b060000db(5454次提交)x86_64 hpack-0.20.0
- Visual Studio代码版本1.20.0
- Haskero版本1.3.1
- Atom版本1.23.3 x64
- 语言haskell版本1.17.3
-Werror
标志):
然而,我真的不明白为什么我们要这么做,因为这是开箱即用的:
stack ghci --with-ghc intero "--ghci-options=-Wall" --no-build --no-load
这似乎是Haskero在VisualStudio代码中启动Intero的方式,在GHCi中,我可以看到警告,而无需传递-Werror
出于好奇,我对hsdev和Sublime Haskell也做了同样的尝试,似乎是开箱即用:
stack ghci --with-ghc intero "--ghci-options=-Wall" --no-build --no-load
希望有帮助。是否启用了警告?我只是试着运行intero,我不得不打开他们来编辑阴谋集团的文件。我想
stack.yaml
和OPTIONS
pragma应该也能用。@chi在我的一个“真正的”堆栈项目中,我试过像这样编辑.cabal
文件:ghc OPTIONS:threaded-rtsopts-with-rtsopts=-N-Wall
(我添加了-Wall
)。这肯定会导致stack build
或stack test
显示所需的警告,但即使在重新启动后,Haskero也不会显示所需的警告…如果我正确回忆起几年前尝试Haskero时的情况,您需要单独安装Intero。如果我能记住正确的方法,那就该死了。如果你犯了错误(而不是警告),你会从Haskero那里得到错误吗?@BenjaminHodgson根据Haskero文档,你必须在项目文件夹中运行stack build intero
,我在我的“实际”项目中也这样做了(我只是没有包括上面的内容,因为复制这个问题似乎并不需要它)。如果我编写了无效代码,Haskero会立即报告。我建议您也要密切关注,特别是,如果这也无法立即实现,我会尝试使用0.3.1.2。我可以确认,将-Werror
添加到我的选项中会按照此处描述的方式进行操作。我还没有尝试Sublime Haskell选项,因为我知道st承认我开始经历Haskell工具堆栈疲劳…与Haskell中的字符串插值相比,这算不了什么;)@MarkSeemann Haskero是否仍然存在问题,或者这些问题在以后的版本中已经修复?(看起来你现在像是哈斯克罗。)这些问题仍然存在。我不认为Haskero已经更新了一年多,但我也没有发现任何更好的作品。。。