Cabal VS runhaskell,什么时候用?
Cabal Vs runhaskell, when to use?
在haskell构建系统中,Cabal
和runhaskell
有几乎相同的子命令集,configure
,build
。对于运行haskell,是:
runhaskell Setup.hs configure
runhaskell Setup.hs build
...而对于 cabal 来说是:
cabal build
cabal configure
那么,我应该在什么时候使用哪个命令呢?这两个命令是否具有相同的功能?
我可以 运行 runhaskell
没有 sudo 访问权限吗,因为我看到 runhaskell
在 /opt/ghc/7.8.4/lib
中创建条目,而 cabal 在 sudo/non-sudo 模式下工作?
cabal
和 runhaskell
有完全不同的用途。
runhaskell
用于执行 Haskell 程序而不
需要编译它们。您可以将它放在 Haskell 文件的顶部:#!/usr/bin/env runhaskell
并赋予它编写脚本的能力。 cabal
是包管理器和构建系统
Haskell.
另外 cabal
和 runhaskell
不共享它们的子命令,例如
configure
、build
、install
等
i saw in this link bob.ippoli.to/archives/2013/01/11/getting-started-with-haskell, two commands being used... runhaskell Setup.hs configure && runhaskell Setup.hs build
通常 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)
runhaskell
没有任何子命令:
$ runhaskell --help
Usage: runghc [runghc flags] [GHC flags] module [program args]
它获取 Haskell 源文件的路径并立即执行。因此,当您想要 运行 一些 Haskell 代码时,您应该使用它。当然,您可以在没有超级用户访问权限的情况下使用 runhaskell
;我怀疑它会在 /opt
.
中创建任何内容
Cabal 是 Haskell 个项目的构建系统,其目的是将 Haskell 个源代码转换为二进制文件。
在haskell构建系统中,Cabal
和runhaskell
有几乎相同的子命令集,configure
,build
。对于运行haskell,是:
runhaskell Setup.hs configure
runhaskell Setup.hs build
...而对于 cabal 来说是:
cabal build
cabal configure
那么,我应该在什么时候使用哪个命令呢?这两个命令是否具有相同的功能?
我可以 运行 runhaskell
没有 sudo 访问权限吗,因为我看到 runhaskell
在 /opt/ghc/7.8.4/lib
中创建条目,而 cabal 在 sudo/non-sudo 模式下工作?
cabal
和 runhaskell
有完全不同的用途。
runhaskell
用于执行 Haskell 程序而不
需要编译它们。您可以将它放在 Haskell 文件的顶部:#!/usr/bin/env runhaskell
并赋予它编写脚本的能力。 cabal
是包管理器和构建系统
Haskell.
另外 cabal
和 runhaskell
不共享它们的子命令,例如
configure
、build
、install
等
i saw in this link bob.ippoli.to/archives/2013/01/11/getting-started-with-haskell, two commands being used... runhaskell Setup.hs configure && runhaskell Setup.hs build
通常 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)
runhaskell
没有任何子命令:
$ runhaskell --help
Usage: runghc [runghc flags] [GHC flags] module [program args]
它获取 Haskell 源文件的路径并立即执行。因此,当您想要 运行 一些 Haskell 代码时,您应该使用它。当然,您可以在没有超级用户访问权限的情况下使用 runhaskell
;我怀疑它会在 /opt
.
Cabal 是 Haskell 个项目的构建系统,其目的是将 Haskell 个源代码转换为二进制文件。