Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Archlinux上设置Haskell的建议方法是什么?_Haskell_Ghc_Cabal_Archlinux_Haskell Stack - Fatal编程技术网

在Archlinux上设置Haskell的建议方法是什么?

在Archlinux上设置Haskell的建议方法是什么?,haskell,ghc,cabal,archlinux,haskell-stack,Haskell,Ghc,Cabal,Archlinux,Haskell Stack,长话短说,我想要一些关于Haskell在Archlinux上工作的(最佳)方法的指导 我所说的工作是指所有的,就ghci命令行工具而言,安装我没有的软件包——比如,我的问题所指的软件包——以及Haskell ostinate学习者可能需要的任何其他东西 列出了使Haskell在系统上工作的三个(可选?)软件包,即ghc,cabal安装,以及stack。我在我的系统上安装了第一个和第三个,但我想我一定是在篡改时安装了后者(除非它依赖于ghc)。此外,我还安装了大量的haskell-*软件包(为什么

长话短说,我想要一些关于Haskell在Archlinux上工作的(最佳)方法的指导

我所说的工作是指所有的,就ghci命令行工具而言,安装我没有的软件包——比如,我的问题所指的软件包——以及Haskell ostinate学习者可能需要的任何其他东西

列出了使Haskell在系统上工作的三个(可选?)软件包,即
ghc
cabal安装
,以及
stack
。我在我的系统上安装了第一个和第三个,但我想我一定是在篡改时安装了后者(除非它依赖于
ghc
)。此外,我还安装了大量的
haskell-*
软件包(为什么?谁知道呢?作为一名学习者,我肯定已经多次提到过,让我们试试这个!)

  • 每种方案都有利弊吗
  • 它们是否都可以与冲突一起使用
  • 它们中有没有任何一个是多余的
  • 根据我所写的,还有什么我似乎不知道的地方吗

如果您希望开发Haskell代码,那么在软件包中提供动态链接库的做法往往会阻碍您。作为一名Arch用户,我的默认建议是根本不要使用Arch的Haskell软件包,而是通过或从各自项目页面中的指导开始安装您需要的任何软件。

您基本上已经做到了。请尝试以下操作:

  • ghci
    :如果您得到Haskell REPL,它就会工作

  • stack ghci
    :您应该再次获得Haskell REPL。GHC有很多版本,
    stack
    与库一起管理这些版本。每当您使用新版本的GHC
    stack
    时,它都会下载并为您创建本地安装

堆栈
独立于Linux软件包管理器。问题是,您的发行版只有它集成的任何应用程序实际需要的Haskell库,一旦您走出这些库,您就陷入了依赖地狱,没有任何支持。因此,我建议您避免使用发行版Haskell软件包<代码>堆栈完成所有需要的操作

如果从Linux软件包管理器安装了
stack
,则可能需要卸载它并使用个人副本(即~/.local目录中的副本)。然后,您可以始终说
堆栈更新
,检查您是否拥有最新版本

一旦
stack
开始,通过说
stack new my project simple
创建一个项目。然后进入项目文件夹并开始编辑。如果你真的愿意,你可以只使用
.hs
文件和GHC,但这很痛苦;使用
堆栈
,即使您只是在胡闹,也会做得更好


你还需要一个编辑。语法高亮显示等基本功能几乎可以在任何地方使用,但一旦你通过河内塔,你就会想要更好的东西。我用原子和原子。这使用了引擎盖下的,所以你也需要安装它。我知道很多其他编辑器都支持HLS,但我没有使用它们的经验。

ghc
只是编译器
cabal
是一个构建工具,
stack
是围绕
cabal
构建的工具,其中包括一个策划的包存储库。它们并不是相互排斥的。@chepner,从你的评论中,我可以推断出
阴谋集团
堆栈
的依赖关系,但我在我的系统上安装了后者,而不是前者。我遗漏了什么吗?许多发行版的标准Haskell包通常有点旧。如果您对不使用标准软件包管理器没有意见,那么也许可以让ghcup尝试一下@Enlico堆栈,它取决于Cabal(库),而不是Cabal安装(命令行工具,通常被称为“Cabal”)。有关更多详细信息,请参阅。我将下载它并创建本地安装。我想这是几分钟前我第一次运行
stack ghci
时发生的下载。FWIW,我看到
ghci
告诉我
ghci,版本8.10.3
,而
stack ghci
告诉
8.8.4
stack--version
是2.5.1),所以看起来Arch下载的编译器版本比
stack
要更新。stack使用列出库版本的“解析器”文件,编译器等。默认情况下,它使用最新的长期支持解析器。因此,您的建议是使用
pacman
来安装
stack
或任何满足相同角色的东西,然后使用它来安装haskell软件包。也许我也应该卸载所有
haskell-*
软件包?根据您在对我的问题的评论中链接的答案(而且因为它看起来像是
stack
下载了比我用
pacman
安装的版本更旧的
ghci
),我会选择
cabal安装
,而不是
stack
。与此相关,为什么您编写ghcup/Cabal或Stack而不是Cabal install或Stack?我想我还是遗漏了一些东西。[1/2]@Enlico(1)我的建议是根本不使用
pacman
,而是通过项目页面中的说明获取工具。即使是最新版本也会带来大量的
haskell-*
包。(2) 是的,我建议您删除
haskell-*
包(和
ghc
stack
cabal安装
,等等)。您通过
pacman
[2/2]@Enlico(3)我说的是“ghcup[…]或stack”,因为使用这两个包中的任何一个,您都可以使用ghc和构建工具快速建立一个工作的haskell环境。与Stack不同,cabal install不为您管理GHC版本,因此alt