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

标签 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)

最佳答案

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

stack runghc -- -isrc app/Main.hs

关于haskell - 作为脚本运行 .hs 文件时如何导入相邻模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56105510/

相关文章:

haskell - 使用 Char 在没有 FlexibleContexts 的情况下无法编译

haskell - 我如何指示 cabal-install 或 stack 使用 hackage 包的本地版本?

haskell - Haskell 中的惰性前向引用

Haskell:[IO ()] 到 IO ()

haskell - 在 Haskell 中找到 Knight's Tour 的一种解决方案

Haskell 堆栈错误 : "The same package name is used in multiple local packages"

haskell - 如何使用Stack在另一个项目中导入个人库?

haskell - 使用 Typeable 在运行时部分应用函数(任何类型匹配的时间)

haskell - 尽管堆栈求解器,找不到模块 `Test.Hspec'

haskell - 了解Haskell的堆栈程序以及解析器和LTS版本