【问题标题】:Haskell at a user level用户级别的 Haskell
【发布时间】:2012-09-07 20:31:30
【问题描述】:

我喜欢在 Haskell 中编码,但我经常在无法安装软件的计算机上使用,并且对你可以运行的内容有一些限制。我想在这台计算机上编写 Haskell 代码并对其进行测试。有谁知道 Haskell 的版本,解释或编译,用 Java、JavaScript、Ruby、Python 或 Mac 上默认安装中可用的其他解释语言编写的?可以在用户级别安装的独立版 Haskell 也可以,但不能自己编译 Haskell。

【问题讨论】:

  • 小sn-ps的代码,还是多个文件?
  • 你不能用例如运行一个虚拟机吗?那台mac上的Ubuntu,然后用管理员权限安装你喜欢的任何东西?
  • 只有管理员为他提供了软件来做那么多事情,他才能运行虚拟机......
  • 我没有VirtualBox,但一个杂物也许能帮我弄到它。它也会非常慢。定义小的 sn-ps 代码......我喜欢写 20-30 行,包括。每天输入签名

标签: macos haskell compiler-construction interpreter


【解决方案1】:

GHC 二进制发行版(以 tarball 形式提供,而不是安装程序)都可以轻松地在本地安装。

./configure --prefix=$HOME/ghc
make install

然后更新您的路径以包含 $HOME/ghc/bin

如果您想要 cabal,请从 hackage 获取 tarball,然后解压缩并运行 bootstrap.sh。

GHC 非常适合本地安装。事实上,我从来没有将它用作系统安装。

【讨论】:

  • 谢谢!这甚至不需要我运行任何我不应该运行的应用程序,因为我可以运行 Java Runtime 并使用基于 java 的终端来执行所有这些命令。为简单起见,您会得到“正确”标记和第一个答案。
  • 作为最近不得不与他的操作系统(带有旧存储库的 Ubuntu)对抗以摆脱 GHC6 以安装 GHC7 的人:谢谢。
【解决方案2】:

我也在我的工作站上这样做,这样我所使用的发行版(在我的例子中是 Debian)不会突然开始升级东西而我没有注意到一个简单的apt-get upgrade

此解决方案安装完整的 ghchaskell-platform 以及 ~/.cabal 前缀。

首先,我有一个~/local 目录,用于将自定义编译的程序放在我的主目录中。我通常不喜欢sudo make install 步骤,因为我给了一些随机的Makefile 对我的系统的root 访问权限,这让我感到不安。

然后我从ghc site 下载 ghc 二进制发行版。请注意,我将您链接到 7.4.2。我听说 Mac OS X 上有一些段错误,但我不知道细节。您应该检查一下或获取newer ghc,但请注意,hackage 上的许多软件包尚未修复以适用于 7.6。另外,请忽略“停止!”警告,你是真正想要非发行版 GHC 二进制文件的 1%。

你可以直接cd到ghc目录,然后./configure --prefix=$HOME/local/haskell左右,然后make install(不需要编译,它只是安装,而不是编译。)

此时,您应该将~/local/haskell/bin 添加到您的路径中。 Here's 我在~/.zshrc 中输入的代码,它将所有~/local/*/bin 目录添加到您的路径中。

然后您可以获取 Haskell 平台,并执行相同的 ./configure --prefix=$HOME/local/haskell && make && make install 舞蹈。这一步需要编译。这意味着您将需要安装一些头文件库。我发现必要的随机 openGL 标头特别烦人。

当然你也可以跳过haskell-platform,直接下载cabal-install,然后安装你需要的。在任何情况下,您都不应忘记将~/.cabal/bin 添加到您的$PATH

做一个cabal update,你应该很高兴。

注意:GHC 的二进制发行版需要一个重要的部分,它有时可能是旧 Linux 系统上的一个 pita:libgmp。它是动态链接的,如果你也遇到了一些关于在 OS X 上找不到共享 libgmp 的错误,你可以……好吧,在评论中问这个问题,我将解释如何到达那里。基本上,你必须自己编译 libgmp + deps。

但我认为这在 OS X 上应该不是问题。这只是我尝试过的几个旧的 debian 机器上的问题。

【讨论】:

  • 感谢您提供所有详细信息!如果我可以将多个标记为正确,我会标记你是正确的。如果你所说的任何东西对它的工作来说是必不可少的,我会把你换成回答者。
【解决方案3】:

对于单个文件,您可以使用codepad

【讨论】:

    猜你喜欢
    • 2012-08-18
    • 1970-01-01
    • 2023-03-18
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 2017-11-10
    相关资源
    最近更新 更多