编译堆栈脚本而不是 运行 它

Compile stack script instead of running it

构建工具 stack 具有将通常编译的 haskell 源文件视为脚本的功能。 (https://docs.haskellstack.org/en/stable/GUIDE/#script-interpreter)

是否也可以用同样的方法创建编译后的可执行文件?

我搜索了 stackstack scripthelp 部分,但找不到使这成为可能的选项。

script.hs:

#!/usr/bin/env stack
{-
  stack script
  --resolver lts-13.14
  --package turtle
-}

main = print "hello"

因此,如果赋予它正确的权限,则可以执行该文件。我想在幕后堆栈会编译文件然后运行它。我只想得到编译后的中间二进制文件。

不,它没有编译。它是 运行 到 runhaskell,这是一个 Haskell 解释器。如果你想编译它......那么做。而不是 运行ning 脚本, 从脚本注释中获取 --resolver--package 选项并像这样传递它们

stack ghc --resolver lts-13.14 --package turtle test.hs

script 命令将 --compile--optimize 作为标志,这将指示 Stack 首先编译为可执行文件(可选 -O2 优化级别) 运行.