gpt4 book ai didi

haskell - 如何让 Haskero 在非详尽模式匹配时发出警告

转载 作者:行者123 更新时间:2023-12-01 03:15:47 24 4
gpt4 key购买 nike

我目前正在评估 Haskero在 Visual Studio Code 中作为替代 Haskell 编辑器而不是 Atom 使用 Atom-Haskell .到目前为止,Haskero 看起来很有希望,但我想念我通常从 Atom-Haskell 得到的编译器警告。

作为说明问题的一种方式,请考虑这个简单的重现:

重现步骤

  • 打开已安装 Haskero 的 Visual Studio Code
  • 添加一个新的 Haskell 文件: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 就是这样做的。

    实际行为

    没发生什么事。问题 View 只是指出:

    No problems have been detected in the workspace so far.



    更多细节

    上面重现的步骤是我能想到的最简单的步骤,但是当我创建一个完整的 Stack 项目并确保我已经运行 stack build intero 时,我看到了相同(缺乏)的行为。在我的项目目录的根目录中。

    我的环境是:
  • Windows 10 专业版 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
  • 最佳答案

    看起来你必须告诉 Haskero 将任何警告变成 fatal error (注意 -Werror 标志):

    "haskero.intero.ghciOptions": [
    "-Wall",
    "-Werror"
    ]

    enter image description here

    但是,我真的不明白为什么我们必须这样做,因为这是开箱即用的:
    stack ghci --with-ghc intero "--ghci-options=-Wall" --no-build --no-load

    enter image description here

    这似乎是 Haskero 在 Visual Studio Code 中启动 Intero 的方式,在 GHCi 中我可以看到警告而不通过 -Werror ...

    出于好奇,我对 hsdev 也做了同样的尝试 0.3.1.2 , 和 Sublime Haskell 91e0d29 ,并且似乎是开箱即用的:

    enter image description here

    希望有帮助。

    关于haskell - 如何让 Haskero 在非详尽模式匹配时发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48770086/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com