将.hs文件作为脚本运行时如何导入相邻模块

时间:2019-05-13 03:45:22

标签: haskell haskell-stack

我遵循以下指示: https://haskell.fpcomplete.com/tutorial/stack-script

我有一个具有以下文件结构的cabal / stack项目:

app/Main.hs
src/Lib.hs

我可以使用以下命令运行Main.hs:

stack runghc -- app/Main.hs 

如果Main.hs不导入Lib.hs则有效,但如果导入,则出现此错误:

app/Main.hs:3:1: error:
    Ambiguous module name ‘Lib’:
      it was found in multiple packages:
      haskell-starter-0.1.0.0 libiserv-8.6.3
  |
3 | import Lib
  | ^^^^^^^^^^

是否在构建中包含src / Lib.hs文件?对于软件包,它看起来像:

stack runghc --package xyz -- app/Main.hs 

但是模块或文件呢?像这样:

stack runghc --module src/Lib.hs -- app/Main.hs 

更新:所以我尝试了:

stack runghc -- -i src/* app/Main.hs

然后我得到了

src/Lib.hs:0:66: error:
    • Variable not in scope: main :: IO a0
    • Perhaps you meant ‘min’ (imported from Prelude)

1 个答案:

答案 0 :(得分:3)

您需要传递runghc的{​​{1}}选项以告知它包含路径。以下应该起作用:

-i