我首先尝试安装Hlint.cabal install hlint但后来我得到了错误:
cabal: Error: some packages failed to install:
cpphs-1.20.2 depends on old-time-1.1.0.3 which failed to install.
haskell-src-exts-1.18.2 depends on old-time-1.1.0.3 which failed to install.
hlint-1.9.37 depends on old-time-1.1.0.3 which failed to install.
old-time-1.1.0.3 failed during the configure step. The exception was:
ExitFailure 77
Run Code Online (Sandbox Code Playgroud)
然后我尝试安装ghc-mod,因为我读到hlint是该包的依赖项(?).认为它可以解决问题.所以我做了cabal install ghc-mod哪个给了我错误.
cabal: Error: some packages failed to install:
cpphs-1.20.2 depends on old-time-1.1.0.3 which failed to install.
ghc-mod-5.6.0.0 depends on old-time-1.1.0.3 which failed to install.
haskell-src-exts-1.17.1 depends on old-time-1.1.0.3 which …Run Code Online (Sandbox Code Playgroud) 我才刚开始用 Haskell 编程几周。有人告诉我使用 HLint 来改进我的代码。问题是我不知道如何针对我的 .hs 文件运行 HLint。我阅读了文档,并且能够使用cabal install hlint. 下一步是使用 HLint 运行 HLint hlint myfile.hs。我不知道在哪里输入这一行。cmd 和 ghci 都不会让我运行命令。我在这里缺少什么?
我正在使用窗户。
编辑:
我刚刚删除了 Haskell 并在我的系统上重新安装了它。我认为问题出在我的 Haskell 安装上。这就是我尝试再次安装 HLint 时得到的结果:

该文件确实存在C:\Users\PCPCPCCP\AppData\Roaming\cabal\setup-exe-cache
编辑2:
好像 hlint 没有正确安装。即使在重新安装了 haskell 平台之后,我也无法在我的系统上安装 hlint。但是,我确实在我的虚拟机上工作过...
我刚刚开始学习Haskell,"学习Haskell for Great Good".我目前正在阅读"类型和类型类"一章,所以我的知识非常......不存在.我使用Sublime Text 2和SublimeHaskell包,它在每次保存时构建/检查文件.
问题:我正在尝试像这样进行函数类型声明:
funcName :: [Char] -> [Char]
Run Code Online (Sandbox Code Playgroud)
我收到这个警告:
警告:使用找到的字符串:[Char] - > [Char]为什么不:String - > String
建立失败
你能解释一下为什么使用Char数组而不是字符串是一个坏主意,或者给我一个链接来解释可能的反响等等.我用Google搜索,什么也没发现.
PS我是一名C#开发人员,我理解char数组和c语言中的字符串之间的区别.
HLint给出了如何改进源代码的建议.但是,鉴于建议的性质,我想知道是否可以自动应用这些建议.
是否可以自动应用提出的建议hlint?
我正在尝试禁用 HLint 给我的一些警告。根据文档,我应该能够在我的文件顶部添加一个编译指示。所以我尝试了以下方法:
{-# HLINT ignore #-}
module Main where
Run Code Online (Sandbox Code Playgroud)
然而,这在运行时给了我一个错误stack build:
/Users/nene/somedir/src/Main.hs:1:1: warning: [-Wunrecognised-pragmas]
Unrecognised pragma
|
1 | {-# HLINT ignore #-}
| ^^^
Run Code Online (Sandbox Code Playgroud)
似乎 pragma 实际上在我的编辑器(带有“Haskell”扩展名的 VSCode)中有效,但在运行stack.
通过命令提示符使用Hlint对我有用,但是我在尝试执行GHCi集成时遇到问题.
http://community.haskell.org/~ndm/darcs/hlint/hlint.htm说"脚本位于hlint.ghci [link],并在数据目录中本地安装了一个副本.要使用,请添加内容到你的GHCi启动文件."
C:\ Users\X\AppData\Roaming\cabal\hlint-1.8.23包含此hlint.ghci文件.
现在我想找到GHCi启动文件.我使用的是Windows 7,根据http://www.haskell.org/ghc/docs/latest/html/users_guide/ghci-dot-files.html,ghci.conf文件应该在... /的文件夹中APPDATA/GHC.但是我的ghc文件夹(C:\ Users\X\AppData\Roaming\ghc)只包含一个ghci_history文件.
所以我将hlint.ghci文件复制到我的ghc文件夹并将其重命名为ghci.conf.从现在开始WinGHCi它崩溃,如果我启动GHCi它说:
interactive>:10:91:字符'\n'的字符串/字符文字中的词法错误
interactive>:4:105:字符'\n'的字符串/字符文字中的词法错误
我究竟做错了什么?该问题与缺少的GHCi启动文件有关吗?
而不是发明我自己的,对于典型的Haskell任务,例如编译,打包,hlint,quickcheck等,有什么好的makefile规则?
在搜索中我发现像这样的例子:
ghc -M *.hs
Run Code Online (Sandbox Code Playgroud) haskell ×7
hlint ×7
cabal ×1
ghci ×1
makefile ×1
package ×1
quickcheck ×1
refactoring ×1
sublimetext2 ×1
winghci ×1