首页 > 解决方案 > 将.hs文件作为脚本运行时如何导入相邻模块

问题描述

我在这里遵循指示: 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)

标签: haskellhaskell-stack

解决方案


您需要传递选项runghc-i告诉它包含路径。以下应该有效:

stack runghc -- -isrc app/Main.hs

推荐阅读