haskell - 将.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)
解决方案
您需要传递选项runghc
来-i
告诉它包含路径。以下应该有效:
stack runghc -- -isrc app/Main.hs
推荐阅读
- vba - 运行时错误“5”无效的过程调用或参数
- dart - 超类型的静态成员必须由定义类型的名称限定
- c# - IE 和 Chrome 中的 ASP.NET 日期格式不起作用
- python - 通常将 For 循环转换为列表理解
- python - Google App Engine - Python 3 - ModuleNotFoundError:没有名为“pytz”的模块
- r - 使用向量化或应用从矩阵中提取值以绑定一个向量
- javascript - 如何循环事件单击获取每个a的属性?
- sql - 您可以在 Presto / Athena 中为 AT TIME ZONE 的时区参数使用一列吗?
- maven - 使用工件 id 在 springboot 应用程序中设置的默认 url
- php - 一台带有 nginx 的服务器中的多个 wordpress