在haskell 构建系统中, Cabalrunhaskell 有几乎相同的子命令集, configurebuild 。对于 runhaskell,它是:

runhaskell Setup.hs configure
runhaskell Setup.hs build

...而对于 cabal 来说,它是:
cabal build
cabal configure

那么,我应该什么时候使用哪个命令呢?这两个命令是否具有相同的功能?

我可以在没有 sudo 访问的情况下运行 runhaskell 吗,因为我看到 runhaskell/opt/ghc/7.8.4/lib 中创建条目而 cabal 在 sudo/非 sudo 模式下工作?

最佳答案

cabalrunhaskell 服务于完全不同的目的。
runhaskell 用于执行 Haskell 程序,无需
需要编译它们。你可以把它放在 Haskell 文件的顶部:#!/usr/bin/env runhaskell 并赋予它脚本能力。 cabal 是一个包管理器和一个构建系统
对于 haskell 。
cabalrunhaskell 也不共享它们的子命令,例如
configurebuildinstall 等。



通常 Setup.hscabal init 生成时具有以下代码:

import Distribution.Simple
main = defaultMain

现在,如果您看到 defaultMain 的实现:
defaultMain :: IO ()
defaultMain = getArgs >>= defaultMainHelper simpleUserHooks

所以你传递的实际上是命令行参数,它可以是任何东西。事实上,你可以自己测试:
$ runhaskell Setup.hs invalid_argument
unrecognised command: invalid_argument (try --help)

关于haskell - Cabal Vs runhaskell,什么时候使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29718123/

10-11 19:10