【发布时间】:2023-03-06 08:00:01
【问题描述】:
从 ghc 7.6 更新到 7.10 后,您似乎无法使用 :m [Module] 或 ghci> import [Module] 其中 [Module.hs] 是您在当前工作目录中的手写模块文件。
似乎 ghci 只搜索属于 haskell 标准库的模块和通过 cabal 全局安装的模块。 (不过,你仍然可以在 ghci 提示中 :load [Module.hs])
我认为这有点烦人,因为您无法通过直接从 ghci 导入它们来测试我的模块定义是否正确。有没有我可以摆弄的开关或配置,所以我可以知道我的 haskell 工作目录在哪里 ghci?
【问题讨论】:
-
只需将
.cabal扔到暴露您的模块的文件夹中,它应该可以工作 -
我不明白。如果
:load有效,为什么不直接使用它呢? -
您仍然可以在“本地”模块上使用
:m或import,只是现在必须在调用这些命令之前加载所有模块(我相信它之前会加载如果未加载模块会自动加载?)。所以就做:l Module.hs ; :m + Module。 -
上面的答案和评论是对的;我只想指出#7416 是相关的。您可以使用
:l Module1.hs Module2.hs ...加载多个模块,但只导入Module1.hs。您必须:m +Module2 ...导入其余部分。 -
@sclv
:load略有不同,它加载文件中的所有函数,而不仅仅是模块导出的函数(即module Foo (a,b,c) where...)。