【问题标题】:ghci: how to import modules in a folderghci:如何在文件夹中导入模块
【发布时间】: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 有效,为什么不直接使用它呢?
  • 您仍然可以在“本地”模块上使用:mimport,只是现在必须在调用这些命令之前加载所有模块(我相信它之前会加载如果未加载模块会自动加载?)。所以就做:l Module.hs ; :m + Module
  • 上面的答案和评论是对的;我只想指出#7416 是相关的。您可以使用:l Module1.hs Module2.hs ... 加载多个模块,但只导入Module1.hs。您必须 :m +Module2 ... 导入其余部分。
  • @sclv :load 略有不同,它加载文件中的所有函数,而不仅仅是模块导出的函数(即module Foo (a,b,c) where...)。

标签: haskell ghci


【解决方案1】:

不是一个很有用的方法,但是如果你想实现这个旧的行为,你必须加载包含模块的文件

ghci> :l File.hs

隐藏/删除所有不需要的模块

ghci> :m

从文件导入的模块现在可用

ghci> :m YourModule

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    相关资源
    最近更新 更多