找到一个 Haskell 模块所属的包

Find the package a Haskell module belongs to

我是 Haskell 堆栈的新手,想知道如何找出包含特定模块的包的名称。

目前,我想使用 Data.Tuple.Extra(fst3) ( https://hackage.haskell.org/package/extra-1.7.9/docs/Data-Tuple-Extra.html ) 并且想知道我应该在下面写什么

    $ stack install ????

我已经安装了 tuple 包,但似乎不包含 Extra 部分。

到目前为止我发现的所有关于软件包安装的 Internet 资源都是按照“要使用 Blahblah.Anything.Something,您需要安装 foofoo 软件包”这样的说法。 . .怎么知道呢?我搜索了 Stackage,但它只显示 Data.Tuple.Extra 的文档,我仍然找不到包的名称。

编辑: 正如 K.A.Buhr 在 her/his 回答中指出的那样,stack install 是上述情况的错误命令。请改用 stack build

Hackage, the top-left portion of the page header will always give the package, version number, and description. On the page you link 中浏览包文档时,它在这里:

您还可以使用右上角的“目录”link 转到 extra 包的主页,其中提供了完整的模块列表、许可、links 到包主页和错误跟踪器等。

作为旁注,stack install extra 在技术上是“安装”此软件包的错误命令。如果你想让 extra 包在 Stack 全局项目中可用,正确的命令是 stack build extra。如果你想在堆栈项目中使用 extra,那么你想将 extra 添加到包的 xxx.cabalpackage.yaml 文件中的依赖项中,而不是 运行 stack build(无参数)构建和安装它以在您的项目中使用。

相比之下,stack install 命令等同于 stack build --copy-bins,它将包中的任何可执行文件复制到 ~/.local/bin,因此它们将在您的路径中。见Stack docs。它旨在用于安装通过 Stack 分发的 Haskell 编写的程序,因此您可以 stack install hlint 安装 hlint linter,例如。

在这种情况下,因为extra包没有可执行文件,stack install extrastack build extra会做同样的事情,但最好养成使用[=的习惯18=] 当您不打算安装任何软件包二进制文件时,以避免意外。