【问题标题】:Could not find module 'Data.Set'找不到模块“Data.Set”
【发布时间】:2018-09-02 07:41:07
【问题描述】:

我的 Fedora 28 系统上安装了以下 RPM 软件包:

ghc-ghc-8.2.2-66
ghc-containers-0.5.10.2-66

根据hackage,设置模块应包含在给定的 RPM 中。但是尝试import Data.Set 会导致

<no location info>: error:
    Could not find module ‘Data.Set’
    Perhaps you meant Data.Int (from base-4.10.1.0)

我错过了要安装的东西吗?如何检查哪些模块可用?

编辑:

$ ghc-pkg list
/usr/lib64/ghc-8.2.2/package.conf.d
    base-4.10.1.0
    ghc-prim-0.5.1.1
    integer-gmp-1.0.1.0
    rts-1.0

如何注册模块?

【问题讨论】:

  • 尝试ghc-pkg list 检查是否一切正常。
  • 可能你安装了“软件”,但没有在包管理器中注册。
  • 我怀疑 Fedora 的 ghc-containers-0.5.10.2-66 包实际上是针对与您尝试使用它的编译器不同的编译器。 Haskell 包总是针对一个特定的编译器构建的,不能与另一个编译器一起使用。大多数人根本不依赖 OS-distro 软件包,而是使用 Cabal-install 或 Stack 安装所有需要的软件包。即haskell.org/platformdocs.haskellstack.org/en/stable/README
  • 我不知道为什么它不起作用;可能是 Fedora RPM 中的一个错误。但是,如果没有 Fedora 版本的 GHC,您可能会更好。它主要作为为 Fedora 打包的其他 Haskell 软件的编译器而存在。我建议删除它并安装堆栈。

标签: haskell fedora-28


【解决方案1】:

我会跳过操作系统包并使用stack

$ wget -o get-stack.sh https://get.haskellstack.org/
$ chmod +x get-stack.sh
$ ./get-stack.sh -d ~/.local/bin
$ echo 'export PATH="~/.local/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
$ stack --version
Version 1.7.1, Git revision ...

然后使用stack ghc运行GHC;第一次安装这个:

$ stack ghc
Writing implicit global project config file to: ...
Note: You can change the snapshot via the resolver field there.
Using latest snapshot resolver: lts-12.9
Downloaded lts-12.9 build plan.    
Preparing to install GHC to an isolated location.

【讨论】:

  • 我终于选择了代码按预期工作的堆栈。感谢您澄清这一点!
【解决方案2】:

对于像我这样发现此问题的新人,您需要将 containers 添加到您的 package.yaml 依赖项中才能导入 Data.Set。我的 package.yaml 依赖项看起来像这样,以使 Data.Set 导入工作:

dependencies:
  - base >= 4.7 && < 5
  - containers > 0.6

然后你可以像在你的文件中导入 Data.Set

import Data.Set (Set)
import qualified Data.Set as Set

【讨论】:

    【解决方案3】:

    ghc-containers 仅包含链接到它的已编译程序的共享库 (.so)。如果您希望在开发中使用该库,请安装ghc-containers-devel

    $ dnf install -y ghc-containers-devel
    $ ghci
    GHCi, version 8.2.2: http://www.haskell.org/ghc/  :? for help
    Prelude> import Data.Set
    Prelude Data.Set> 
    

    【讨论】:

      猜你喜欢
      • 2022-12-15
      • 2018-02-21
      • 2021-07-23
      • 1970-01-01
      相关资源
      最近更新 更多