我运行cabal build了一个*.cabal没有version:指定的文件,它似乎混淆了阴谋。当我放回版本规范时,我得到了
$ cabal build
Resolving dependencies...
TODO: add support for multiple packages in a directory. Got
yah-0.1.0.0
yah-0.1.0.0
CallStack (from HasCallStack):
error, called at src\\Distribution\\Client\\ProjectOrchestration.hs:586:9 in cabal-install-3.8.1.0-inplace:Distribution.
Client.ProjectOrchestration
Run Code Online (Sandbox Code Playgroud)
也就是说,通常该yah.cabal文件会读取
cabal-version: 3.0
name: yah
version: 0.1.0.0
license: etc., etc.
Run Code Online (Sandbox Code Playgroud)
并在没有或可能没有- 不确定的情况下cabal build喂食上述内容。无论如何,重新开始并不能解决这个问题,但其他项目可以正常编译。versioncabal-versioncabal init
我的猜测是,项目中的各种模块yah已在某处/以某种方式注册,目前尚不清楚如何删除它并重新开始。我使用的是 Windows,cabal 3.8.1.0。我看过C:\cabal,, C:\ghccup...C:\Users\...\AppData\Roaming\cabal
我编写了一个程序,利用库Hashset中的unordered-containers。它在我的 GHC 9.2.4 计算机上运行良好。由于某些原因,我正尝试将其移植到标题中提到的 GHC 8.8.4。它主要归结为添加一些语言扩展。
不过我遇到了一个奇怪的问题。
\n我有一个功能powerset :: Hashable a => Set a -> [Set a]。
编译时我收到以下错误:
\nCould not deduce (hashable-1.3.0.0:Data.Hashable.Class.Hashable\n a)\n arising from a use of \xe2\x80\x98makeSubset\xe2\x80\x99\n from the context: Hashable a\n bound by the type signature for:\n powerset :: forall a. Hashable a => Set a -> [Set a]\n at Automaton.hs:48:1-45\n Possible fix:\n add (hashable-1.3.0.0:Data.Hashable.Class.Hashable\n a) to the context of\n the type signature for:\n powerset :: forall …Run Code Online (Sandbox Code Playgroud) 有人帮助我理解它.Cabal,很棒的应用程序,喜欢它.但如果cabal文件已更改,则cabal构建将失败,并显示运行cabal配置的消息.虽然它没有在cabal安装上抱怨这一点.我不明白为什么cabal的程序员会遇到所有麻烦来检测情况并将消息输出而不是自动运行配置步骤.为什么?
我最近按照这些步骤在CentOS 6.4上安装了Haskell
请注意我没有介绍任何花哨的旗帜.结果是以下包位于/ usr/local/lib:
async-2.0.1.4
attoparsec-0.10.4.0
case-insensitive-1.0.0.1
cgi-3001.1.7.5
fgl-5.4.2.4
GLURaw-1.3.0.0
GLUT-2.4.0.0
hashable-1.1.2.5
haskell-src-1.0.1.5
html-1.0.1.2
HTTP-4000.2.8
HUnit-1.2.5.2
mtl-2.1.2
network-2.4.1.2
OpenGL-2.8.0.0
OpenGLRaw-1.3.0.0
parallel-3.2.0.3
parsec-3.1.3
primitive-0.5.0.1
QuickCheck-2.6
random-1.0.1.1
regex-base-0.93.2
regex-compat-0.95.1
regex-posix-0.95.2
split-0.2.2
stm-2.4.2
syb-0.4.0
text-0.11.3.1
transformers-0.3.0.0
unordered-containers-0.2.3.0
vector-0.10.0.1
xhtml-3000.2.1
zlib-0.5.4.1
Run Code Online (Sandbox Code Playgroud)
以下内容位于/usr/local/lib/ghc-7.6.3下:
array-0.4.0.1
base-4.6.0.1 …Run Code Online (Sandbox Code Playgroud) 最近我试图安装llvm-general-3.5.1.0软件包大约一个星期.基本上我收到此错误:链接.我的情况完全相同.Windows 10,ghc 7.10.2,cabal 1.22.4.0.我用cmake从源代码安装了llvm 3.5.2,一切都很顺利.在llvm/lib目录中,我有*.lib文件(例如LLVMAnalysis.lib).
但不知何故,cabal无法看到这些库并给出了这个令人沮丧的错误:
配置llvm-general-3.5.1.0 ... setup.exe:缺少对外部库的依赖:*缺少C库:LLVMLTO,LLVMObjCARCOpts,LLVMLinker,LLVMipo,LLVMVectorize,LLVMBitWriter,LLVMCppBackendCodeGen,LLVMCppBackendInfo,LLVMTableGen,LLVMDebugInfo,LLVMOption,LLVMX86Disassembler, LLVMX86AsmParser,LLVMX86CodeGen,LLVMSelectionDAG,LLVMAsmPrinter,LLVMX86Desc,LLVMX86Info,LLVMX86AsmPrinter,LLVMX86Utils,LLVMJIT,LLVMIRReader,LLVMAsmParser,LLVMLineEditor,LLVMMCAnalysis,LLVMMCDisassembler,LLVMInstrumentation,LLVMInterpreter,LLVMCodeGen,LLVMScalarOpts,LLVMInstCombine,LLVMTransformUtils,LLVMipa,LLVMAnalysis,LLVMProfileData,LLVMMCJIT,LLVMTarget, LLVMRuntimeDyld,LLVMObject,LLVMMCParser,LLVMBitReader,LLVMExecutionEngine,LLVMMC,LLVMCore,LLVMSupport这个问题通常可以通过安装系统包,提供这些库解决(你可能需要"-dev"版本).如果库已经安装但是在非标准位置,那么您可以使用标志--extra-include-dirs =和--extra-lib-dirs =来指定它们的位置.
我真的想在我的Windows上使用这个软件包,但似乎没有任何工作(我尝试了所有的东西,如--extra-lib-dirs,并与MinGW和VS一起编译 - 同样的问题).
我不能接受它不会安装的事实.我的意思是,必须有一些方法来修复此cabal包中的Setup.hs.有没有人知道在这种情况下cabal有什么问题,我该如何尝试解决这个问题?我不知道cabal究竟是如何运作的,也许有这种知识的人会有想法?或者也许有一种方法可以做到这一点没有cabal?
试图用Haskell构建一个简单的库。它工作了一次,然后停止了工作(很奇怪)
仅运行了几个命令,只有库的简单cabal init
然后添加了以下库
问候
module Greet where
greeet s = "Hey, " ++ s
Run Code Online (Sandbox Code Playgroud)
然后运行cabal new-build,然后运行cabal new-repl
错误如下
Build profile: -w ghc-8.6.3 -O1
In order, the following will be built (use -v for more details):
- HaskellTry-0.1.0.0 (lib) (ephemeral targets)
Preprocessing library for HaskellTry-0.1.0.0..
GHCi, version 8.6.3: http://www.haskell.org/ghc/ :? for help
Ok, one module loaded.
Prelude Greet> greeet "h"
"
Run Code Online (Sandbox Code Playgroud)
在那之后一切都停滞了。
当我使用运行测试套件时cabal test,我收到以下消息:
Running 1 test suites...
Test suite tests: RUNNING...
Test suite tests: PASS
Test suite logged to: my-lib-tests.log
Run Code Online (Sandbox Code Playgroud)
但当我查看日志文件时,内容是:
Test suite tests: RUNNING...
*** Failed! Falsified (after 1 test):
[]
Test suite tests: PASS
Test suite logged to: my-lib-tests.log
Run Code Online (Sandbox Code Playgroud)
为什么当测试明显失败时我却收到通过消息?