堆栈:编译独立源文件

Mat*_*hid 4 haskell haskell-stack

一旦安装了Stack,就可以使用它来为您安装GHC。大!

...现在如何用它编译文件?

需要明确的是:您应该做的是编写一个程序包规范,并使用Stack构建该规范。但是,肯定有一种方法可以在该项目中轻松编译一个小的辅助文件吗?不得不构建一个整个项目只是为了使我可以构建一个小的帮助程序并使之易于从Shell运行,这似乎很愚蠢。

我知道我可以使用Stack 运行任何Haskell文件。但是我无法为自己的生活弄清楚如何编译该东西...

hne*_*atl 5

您可以stack ghc -- <file names>用来编译和链接一组文件(在Stack的用户指南中已简要提及):

有时您可能只想编译(或运行)单个Haskell源文件,而不是为其创建整个Cabal软件包。您可以使用stack exec ghcstack exec runghc为此。作为简单的助手,我们还为这些常见情况提供stack ghcstack runghc命令。

--是为了确保将我们传递的参数发送给ghc,而不是将其解析为的参数stack exec。这与尝试将参数传递给使用常规堆栈工具链生成的可执行文件时是一样的:stack exec myExe -foo传递-fooexec,而不是myExestack exec myExe -- -foo表现出预期的效果。


例如:

酒吧

module Bar where

bar :: Int
bar = 5
Run Code Online (Sandbox Code Playgroud)

oo

import Bar

main :: IO ()
main = print bar
Run Code Online (Sandbox Code Playgroud)

编译(甚至不需要Bar.hs在构建文件中指定,它是自动提供的):

module Bar where

bar :: Int
bar = 5
Run Code Online (Sandbox Code Playgroud)

有一个与依赖性也不是问题-它看起来像所有的包本地安装可用来构建(你可以使用containersQuickCheck没有任何额外的构建PARAMS)。