如何使用堆栈处理单个文件?

时间:2019-04-09 14:03:39

标签: haskell haskell-stack

当我使用单个文件的haskell代码而没有项目时,我只能依靠base包并导入它的模块,但是当我想从其他包中导入模块时,我必须创建一个新项目并将其编辑为package.yaml并将项目添加到dependencies中,这些工作对于单个文件来说太繁琐了。

我可以将我最常用的dependencies列表放到某个地方,以便当我通过stack exec -- ghci my-file.hs加载单个文件时,可以正确找到导入的模块吗?

1 个答案:

答案 0 :(得分:2)

有几种选择:

  • The --package flag,用于临时调用;

  • The global project(另请参见this answer),这是位于~/.stack/global-project/stack.yaml(或操作系统的对应路径)的默认配置,在实际项目之外工作时会启动;和

  • Stack scripts,相当于在源文件顶部放置一个用于指定堆栈调用的标头,如本示例中所述,取自文档...

    #!/usr/bin/env stack
    {- stack
      script
      --resolver lts-6.25
      --package turtle
      --package "stm async"
      --package http-client,http-conduit
    -}
    

    ...,并且在您想要便携式的东西时很有用。