问题描述
离开一段时间后,我试图再次跳入一些 Haskell。我很久以前写的一段代码包括import qualified Data.MultiMap as MultiMap
。由于 Data.MultipMap
在 containers
包中,所以当我运行 ghc program.hs
时会出错。我试图基于 How to make a Haskell cabal project with library+executables that still run with runhaskell/ghci? 编写一个 project.cabal
文件。我最近的尝试是
name: project
version: 1.0
executable project
main-is: project.hs
build-dependencies:
base >= 4 && <= 5,containers
现在当我做cabal build project
时,我得到
Resolving dependencies...
cabal.exe: Could not resolve dependencies:
[__0] trying: project-1.0 (user goal)
[__1] next goal: project:setup.Cabal (dependency of project)
[__1] rejecting: project:setup.Cabal-3.4.0.0/installed-3.4.0.0 (conflict:
project => project:setup.Cabal>=1.0 && <1.25)
[__1] skipping: project:setup.Cabal-3.4.0.0,project:setup.Cabal-3.2.1.0,project:setup.Cabal-3.2.0.0,project:setup.Cabal-3.0.2.0,project:setup.Cabal-3.0.1.0,project:setup.Cabal-3.0.0.0,project:setup.Cabal-2.4.1.0,project:setup.Cabal-2.4.0.1,project:setup.Cabal-2.4.0.0,project:setup.Cabal-2.2.0.1,project:setup.Cabal-2.2.0.0,project:setup.Cabal-2.0.1.1,project:setup.Cabal-2.0.1.0,project:setup.Cabal-2.0.0.2 (has the same
characteristics that caused the prevIoUs version to fail: excluded by
constraint '>=1.0 && <1.25' from 'project')
[__1] rejecting: project:setup.Cabal-1.24.2.0,project:setup.Cabal-1.24.0.0,project:setup.Cabal-1.22.8.0,project:setup.Cabal-1.22.7.0,project:setup.Cabal-1.22.6.0,project:setup.Cabal-1.22.5.0,project:setup.Cabal-1.22.4.0,project:setup.Cabal-1.22.3.0,project:setup.Cabal-1.22.2.0,project:setup.Cabal-1.22.1.1,project:setup.Cabal-1.22.1.0,project:setup.Cabal-1.22.0.0,project:setup.Cabal-1.20.0.4,project:setup.Cabal-1.20.0.3,project:setup.Cabal-1.20.0.2,project:setup.Cabal-1.20.0.1,project:setup.Cabal-1.20.0.0,project:setup.Cabal-1.18.1.7,project:setup.Cabal-1.18.1.6,project:setup.Cabal-1.18.1.5,project:setup.Cabal-1.18.1.4,project:setup.Cabal-1.18.1.3,project:setup.Cabal-1.18.1.2,project:setup.Cabal-1.18.1.1,project:setup.Cabal-1.18.1,project:setup.Cabal-1.18.0,project:setup.Cabal-1.16.0.3,project:setup.Cabal-1.16.0.2,project:setup.Cabal-1.16.0.1,project:setup.Cabal-1.16.0,project:setup.Cabal-1.14.0,project:setup.Cabal-1.12.0,project:setup.Cabal-1.10.2.0,project:setup.Cabal-1.10.1.0,project:setup.Cabal-1.10.0.0,project:setup.Cabal-1.8.0.6,project:setup.Cabal-1.8.0.4,project:setup.Cabal-1.8.0.2,project:setup.Cabal-1.6.0.3,project:setup.Cabal-1.6.0.2,project:setup.Cabal-1.6.0.1,project:setup.Cabal-1.4.0.2,project:setup.Cabal-1.4.0.1,project:setup.Cabal-1.4.0.0,project:setup.Cabal-1.2.4.0,project:setup.Cabal-1.2.3.0,project:setup.Cabal-1.2.2.0,project:setup.Cabal-1.2.1,project:setup.Cabal-1.1.6,project:setup.Cabal-1.24.1.0 (constraint from
minimum version of Cabal used by Setup.hs requires >=3.4)
[__1] fail (backjumping,conflict set: project,project:setup.Cabal)
After searching the rest of the dependency tree exhaustively,these were the
goals I've had most trouble fulfilling: project:setup.Cabal,project
我缺少什么才能让它发挥作用?我应该怎么做才能编译我的 Haskell 程序?
解决方法
将您的 {
"_id": { "$oid": "5fea6e09" },"isActiveTutor": false,"youtubeUrlId": "","name": "rrrr","surname": "rrrrr","email": "u@gmail.com","initials": "","role": "tutor","createdAt": { "$date": "" },"updatedAt": { "$date": { "$numberLong": "" } },"messages": [
{
"contentInfo": {
"viewed": false,"msg": "22222222ghjk"
"createdAt": { "$date": "" }
},"_id": { "$oid": "" },"sender": { "$oid": "600333" }
},{
"contentInfo": {
"viewed": false,"msg": "heloooo","createdAt": { "$date": { "$numberLong": "" } }
},"msg": "dfdfdf","sender": { "$oid": "5fea6e09" }
}
]
}
更改为:
project.cabal
cabal-version: 3.4
name: project
version: 1.0
executable project
main-is: project.hs
build-depends:
base >= 4 && <= 5,multimap
选择最新版本的 Cabal 包格式,鉴于您已经在使用 Cabal 3.4,使用它应该没问题。如果未指定,cabal-version: 3.4
默认为非常旧的版本(如最近的版本 the field is mandatory),这使得 the build-type
field 默认为 cabal-version
而不是 Custom
。反过来,这会导致您得到错误,如 cabal issue #5278 中所述。此外,我已将 Simple
更改为 build-dependencies
,将 build-depends
更改为 containers
(因为 the latter package 是提供 multimap
的那个)。