Xubuntu 13.10上的Haskell 7.6.3:无法导入Monad.Control.Error

时间:2014-04-11 10:36:01

标签: linux haskell controls monads xubuntu

我最近买了一台笔记本电脑并在上面安装了Xubuntu 13.10。今天,我刚刚重新安装它,因为我无法让GHC继续工作。我做了apt-get更新和升级,以及安装linux-headers-generic并安装bcmwl-kernel-source。

这就是我的进展:

从GHC下载的GHC: https://www.haskell.org/ghc/download_ghc_7_6_3#x86_64linux

tar xjf ghc-7.6.3......
cd ghc-7.6.3
./configure

这里他没有配置,所以我必须下载libgmp.so.3并安装它

sudo make install

GHC安装正确。

现在我尝试使用ghci运行它并获得缺少libgmp.so的错误。 我也下载它并安装。两者都使用ubuntu软件中心和pkgs.com

现在我运行ghci。它工作正常。我试试:

import Control.Monad.Error

这里我真正的问题开始了:

<no location info>:
    Could not find module `Control.Monad.Error'
    Perhaps you meant
      Control.Monad.Fix (from base)
      Control.Monad.ST (from base)
      Control.Monad.Zip (from base)

我不知道为什么会这样。我很容易做到:显然

:m +Control.Monad

给出了:     Prelude Control.Monad&gt; 但是不能错误地做到这一点。据我所知,这个库本身带有GHC,但我下载并安装以防万一使用:     sudo apt-get install libghc-mtl-dev

但它仍然没有奏效。我需要帮助才能完成这项工作,或者通常设置haskell。

2 个答案:

答案 0 :(得分:0)

作为Hoogle will tell you,此模块不在基础包中,而是在mtl中。啊,我看到你已经发现了自己。问题是,需要使用GHC 注册包。如果您apt-get安装了一个软件包,这与手动安装的GHC无关。

一般来说,获取新Haskell库包的方法是

cabal install mtl

...当然你需要阴谋。

真的,你应该只安装Haskell platform而不是GHC;当前版本中有ghc-7.6.3。

在?ubuntu 13.10中,您actually get that version就像

一样简单
sudo apt-get install haskell-platform

根本不需要手工安装任何东西。

答案 1 :(得分:0)

使用您的发行版软件包管理器来安装GHC(或整个Haskell平台,如果您需要), 我怀疑GHC 7.6.3目前处于适应能力状态。而不是使用cabal(-install),您应该使用包管理器来安装所需的各种Haskell包。

但是,如果你真的真的想手动安装(也许是因为你想要最新版本的GHC 7.8.1),这就是我在新机器上所做的事情。警告:除非您能够并且愿意清理可能的混乱,否则不要这样做!

  1. 使用distro的软件包管理器安装Haskell平台。如果它是旧版本,你不在乎。您只是这样做以获得任何GHC依赖关系以及cabal-install。

  2. 现在安装您想要的GHC版本。

    sudo mkdir /usr/local/ghc-X.X.X

    ./ configure --prefix = / usr / local / ghc-X.X.X

    sudo make install

    将此GHC添加到您的路径中!

  3. 可选:使用您的软件包管理器卸载GHC(以便在将来的更新中不会升级)。

  4. 在您完成此操作后,当您升级到新版本的GHC时,您只需要执行第2步。