如何在haskell中为hie打开所有学究式模式?

如何在haskell中为hie打开所有学究式模式?,haskell,haskell-ide-engine,Haskell,Haskell Ide Engine,是否可能以某种方式将--pedantic(如在堆栈构建中--pedantic)开关传递到Haskell ide引擎?我希望在编译时看到IDE中出现更多错误,因为我对该语言非常陌生,例如对于非穷举的案例模式 除了这个bug,我在项目页面上找不到任何信息,但这似乎不能解决这个问题。据我所知,不可能将编译器或构建工具开关传递到HIE。HIE根据构建工具自动确定编译器标志,并且没有覆盖机制 相反,您应该将适当的编译器标志添加到生成文件中堆栈构建--pedantic传递-Wall和-Werror标志,因此

是否可能以某种方式将--pedantic(如在堆栈构建中--pedantic)开关传递到Haskell ide引擎?我希望在编译时看到IDE中出现更多错误,因为我对该语言非常陌生,例如对于非穷举的案例模式


除了这个bug,我在项目页面上找不到任何信息,但这似乎不能解决这个问题。

据我所知,不可能将编译器或构建工具开关传递到HIE。HIE根据构建工具自动确定编译器标志,并且没有覆盖机制

相反,您应该将适当的编译器标志添加到生成文件中<代码>堆栈构建--pedantic传递
-Wall
-Werror
标志,因此这些是要添加到构建文件中的标志。这样一来,
堆栈构建
和HIE将始终使用这些标志

包.yaml 如果您有一个
package.yaml
文件(大多数堆栈项目的默认设置),则应将以下行添加到该文件的
ghc options
部分:

      - -Wall
      - -Werror
例如:

name:                project-name
version:             0.1.0.0
github:              "githubuser/project-name"
license:             BSD3
author:              "Author name here"
maintainer:          "example@example.com"
copyright:           "2020 Author name here"

description:         Example

dependencies:
- base >= 4.7 && < 5

ghc-options:
- -Wall
- -Werror

executables:
  project-name-exe:
    main:                Main.hs
    source-dirs:         app
    ghc-options:
    - -threaded
    - -rtsopts
    - -with-rtsopts=-N
name:                project-name
version:             0.1.0.0
-- synopsis:
-- description:
homepage:            https://github.com/githubuser/project-name#readme
license:             BSD3
license-file:        LICENSE
author:              Author name here
maintainer:          example@example.com
copyright:           2020 Author name here
category:            Web
build-type:          Simple
cabal-version:       >=1.10
extra-source-files:  README.md

executable project-name
  hs-source-dirs:      src
  main-is:             Main.hs
  default-language:    Haskell2010
  build-depends:       base >= 4.7 && < 5
  ghc-options:
    -Wall
    -Werror
例如:

name:                project-name
version:             0.1.0.0
github:              "githubuser/project-name"
license:             BSD3
author:              "Author name here"
maintainer:          "example@example.com"
copyright:           "2020 Author name here"

description:         Example

dependencies:
- base >= 4.7 && < 5

ghc-options:
- -Wall
- -Werror

executables:
  project-name-exe:
    main:                Main.hs
    source-dirs:         app
    ghc-options:
    - -threaded
    - -rtsopts
    - -with-rtsopts=-N
name:                project-name
version:             0.1.0.0
-- synopsis:
-- description:
homepage:            https://github.com/githubuser/project-name#readme
license:             BSD3
license-file:        LICENSE
author:              Author name here
maintainer:          example@example.com
copyright:           2020 Author name here
category:            Web
build-type:          Simple
cabal-version:       >=1.10
extra-source-files:  README.md

executable project-name
  hs-source-dirs:      src
  main-is:             Main.hs
  default-language:    Haskell2010
  build-depends:       base >= 4.7 && < 5
  ghc-options:
    -Wall
    -Werror
有关更多详细信息,请参阅


在开发过程中,您可能希望从您的
包.yaml
或cabal文件中删除
-Werror

我只是从Haskell开始,我必须说我对这里的构建系统非常迷茫。我用stack new project name simple开始了我的项目,我得到了一个.cabal文件和一个stack.yaml文件,这两个文件内部都有依赖项。现在,我需要添加第三个项目,其中也列出了依赖项(除了您建议的之外)。为什么这里有这么多重叠?我真的需要哪些文件?我会给你一个关于这些东西来源的快速概述。希望它能有所帮助。一开始有一个叫做Cabal()的工具。这就是
.cabal
文件的来源。Cabal从Hackage存储库()安装软件包。Hackage上的包经常有破坏性的更改。选择要安装的每个软件包的哪个版本时需要小心,以确保所有内容都兼容。Cabal尝试自动进行版本选择,但有时它会让程序员手动调整版本号,直到找到一个有效的组合。Stack()使用新的逻辑来选择和安装依赖项,从而扩展了Cabal。这就是Stack仍然有
.cabal
文件的原因。它还添加了自己的
stack.yaml
文件来控制依赖项的安装位置。其思想是
stack.yaml
描述了一组相互兼容的精心策划的包。这样你就知道你得到了每个依赖项的正确版本(包括可传递依赖项),因为在策划的集合中每个包只有一个版本。至于
package.yaml
,一些Haskeller不喜欢旧的
.cabal
文件格式,所以他们创建了一个新的基于yaml的格式,称为Hpack()
package.yaml
是一个Hpack文件。Stack已采用Hpack格式,并将其作为使用
Stack new project name
创建的新项目的默认格式。如果您有一个
package.yaml
文件,则Stack会根据需要从中自动生成一个
.cabal
文件。一些Haskeller发现,
package.yaml
值得复杂化,但是没有它你也可以做得很好。