即使安装了时间包,我的 ghci 也找不到日历模块。
$ ghc-pkg list | grep time
old-time-1.0.0.6
time-1.2.0.3
time-1.4.0.1
Run Code Online (Sandbox Code Playgroud)
我试图删除旧的包,但这破坏了很多其他包。我该如何解决这个问题?
背景:
我一直在使用gloss 库进行一些简单的图表工作。但是当需要一些更具交互性的东西时,我发现我想要一个更强大的库。在做了一些研究之后,我决定我喜欢 SDL 库的功能,并想尝试为它安装 Haskell 绑定。到这一步我已经失败了。
第1部分:
如何安装和配置 SDL 二进制文件,以便 Haskell 绑定可以使用它们?
第2部分:
Hackage 上众多且记录不完整的 SDL 包中的哪一个是当前社区中的首选绑定?如何让该软件包正确安装?
第 3 部分:(可选)
如果 SDL 不适合 Haskell 开发,那么首选的替代方案是什么?
我看到一个非常奇怪的反复出现的问题,Cabal干扰了我获得可重复的Haskell构建的能力.我有一个带沙盒的cabal项目.如果我这样做cabal install,我会得到表格的错误
Y failed during the building phase. The exception was:
ExitFailure 1
X depends on Y which failed to install.
其中X是我项目的直接依赖,Y是一些传递依赖.但是,如果我只是键入cabal install X,那么它的工作原理!
这是一个具体的例子:我的项目取决于interpolate包.当我这样做时cabal install --allow-newer,我得到这样的错误:
Resolving dependencies...
Configuring haskell-src-meta-0.6.0.9...
Building haskell-src-meta-0.6.0.9...
Preprocessing library haskell-src-meta-0.6.0.9...
[1 of 6] Compiling Language.Haskell.TH.Instances.Lift ( src/Language/Haskell/TH/Instances/Lift.hs, dist/dist-sandbox-d2861272/build/Language/Haskell/TH/Instances/Lift.o )
[2 of 6] Compiling Language.Haskell.Meta.Syntax.Translate ( src/Language/Haskell/Meta/Syntax/Translate.hs, dist/dist-sandbox-d2861272/build/Language/Haskell/Meta/Syntax/Translate.o )
[3 of 6] Compiling Language.Haskell.Meta.Parse ( src/Language/Haskell/Meta/Parse.hs, dist/dist-sandbox-d2861272/build/Language/Haskell/Meta/Parse.o )
[4 of 6] Compiling Language.Haskell.Meta.Parse.Careful ( src/Language/Haskell/Meta/Parse/Careful.hs, dist/dist-sandbox-d2861272/build/Language/Haskell/Meta/Parse/Careful.o ) …Run Code Online (Sandbox Code Playgroud) 我一直无法使用 Cabal 安装任何软件包,收到一条错误消息,指出 tar 存档不在预期目录中。例如,如果我尝试这样做cabal install mtl,我会收到以下错误:
正在解决依赖项...无法安装 text-1.2.1.1 cabal:错误:某些软件包无法安装:text-1.2.1.1 在解压缩软件包时失败。例外是:用户错误(tar 存档中的文件不在预期目录中。预期:“.”但得到以下层次结构:[“text-1.2.1.1”])
我已经运行cabal update,并cabal --version给出以下内容:
$ cabal --version
cabal-install version 1.22.5.0
using version 1.22.4.0 of the Cabal library
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么会发生这种情况?如果您需要任何其他信息,请告诉我。
在我的 haskell 项目中,我有以下目录结构(缺少一些条目,但与此问题无关)
\n\n- quanthas\n - quanthas.cabal\n - src/\n - QuantHas/\n - Settings.hs\nRun Code Online (Sandbox Code Playgroud)\n\n我的 Settings.hs 文件包含此模块头
\n\nmodule QuantHas.Settings(module QuantHas.Settings) where\nRun Code Online (Sandbox Code Playgroud)\n\n我的 cabal 文件看起来像这样
\n\nName: QuantHas\nVersion: 0.0\nDescription:\n QuantHas project is an attempt to port QuantLib to Haskell keeping the functional flavor of Haskell.\nLicense: BSD3\nLicense-file: LICENSE\nBuild-Type: Simple\nCabal-Version: >=1.10\n\nLibrary\n Build-Depends: base >= 3 && < 5, array >= 0.2\n Exposed-modules: QuantHas.Time.Frequency\n QuantHas.Time.TimeUnit\n QuantHas.Time.Period\n QuantHas.Time.Date\n QuantHas.Time.DayCounter\n QuantHas.Time.BusinessDayConvention\n QuantHas.Time.Calendar\n QuantHas.Time.Calendars.UnitedKingdom\n QuantHas.Time.Schedule\n QuantHas.Settings\n QuantHas.Require\n default-language: Haskell2010 \n hs-source-dirs: src\n -- ghc-options: …Run Code Online (Sandbox Code Playgroud) 是否stack仅在需要时为其他人编译和链接整个项目stack ghci?
它不应该跳过前者并立即跳转到ghci加载源吗?我已经观察到它在我的大多数项目中都为我做,因此它正在做看似多余的工作。这是设计使然,还是我的某些堆栈项目配置错误?
也许这是cabal在没有stack要求的情况下由底层完成的?
无论如何,当我只想输入时,我可以做些什么来跳过编译+链接stack ghci?
尽管多次尝试,Cabal都没有更新.为什么Cabal不能正常工作?我该怎么办?最后更新的日期可追溯至89天.
Windows PowerShell
Copyright (C) Microsoft Corporation. Tutti i diritti sono riservati.
PS C:\WINDOWS\system32> ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.2.2
PS C:\WINDOWS\system32> cabal --version
cabal-install version 2.0.0.1
compiled using version 2.0.1.1 of the Cabal library
PS C:\WINDOWS\system32>
PS C:\WINDOWS\system32> cabal update
Downloading the latest package list from hackage.haskell.org
dieVerbatim: user error (cabal.exe: Failed to download
http://objects-us-west-1.dream.io/hackage-mirror/01-index.tar.gz : No Status
Code could be parsed from response: Eccezione durante una richiesta WebClient.
)
Run Code Online (Sandbox Code Playgroud) 我正在使用出色的 Haskell 库Miso,它推荐使用 Nix。自述文件引导我们完成一个简单的项目,该项目可以使用nix-build. 味噌的文档提示我可以做:
nix-shell -A env
cabal configure --ghcjs
cabal build
Run Code Online (Sandbox Code Playgroud)
这也构建了项目,尽管它将结果放在了不同的地方。
nix-build和cabal buildnix-shell 内是否保证产生相同的输出?更一般地说,给定一个.nix表达式,我将如何锻炼需要哪些步骤(例如 cabal configure)来复制它的行为?
我尝试通过 Powershell 和 Git Bash 通过 cabal 安装“System.Random”。
得到这个结果。
PS C:\Users\xxx> cabal install random
Resolving dependencies...
Up to date
Warning: You asked to install executables, but there are no executables in
target: random. Perhaps you want to use --lib to install libraries instead.
Run Code Online (Sandbox Code Playgroud)
然后我尝试像这样输入
cabal install --lib random
Resolving dependencies...
and
cabal install random --lib
Run Code Online (Sandbox Code Playgroud)
两个输出 解决依赖关系... 最新没有警告。但 ghci 找不到模块“System.Random”
输入 cabal install random 仍然有相同的结果和警告。
我正在尝试安装 haskell 的张量流。我的电脑上有这些软件包。我下载了源代码仓库,修改它进行编译,我使用了 v1-install 选项(其他选项都不会安装本地软件包),当我安装它时,但 ghci 告诉我它没有安装,当我尝试编译一个使用无法编译的tensorflow库的程序。
我使用的是 arch Linux,ghc 版本为 8.6.5,cabal 版本为 3.2.0.0。