在haskell 构建系统中, Cabal
和 runhaskell
有几乎相同的子命令集, configure
, build
。对于 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 模式下工作? 最佳答案
cabal
和 runhaskell
服务于完全不同的目的。
runhaskell
用于执行 Haskell 程序,无需
需要编译它们。你可以把它放在 Haskell 文件的顶部:#!/usr/bin/env runhaskell
并赋予它脚本能力。 cabal
是一个包管理器和一个构建系统
对于 haskell 。cabal
和 runhaskell
也不共享它们的子命令,例如
configure
、 build
、 install
等。
通常 Setup.hs
从 cabal 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/