【问题标题】:Idris REPL can't find import while the program compiles程序编译时 Idris REPL 找不到导入
【发布时间】:2023-07-14 07:40:02
【问题描述】:

我克隆了this Idris library,它可以通过必要的依赖项正常编译。有一个example/ 目录,它利用了这个库(导入了它的一些模块),它编译和运行也很好。但是,当我尝试在 Atom 中运行 REPL 时,会显示一条熟悉的错误消息:

Can't find import Graphics/Util/GlfwConfig

这很有趣,因为当make 被执行时,下面是输出行之一:

Installing Graphics/Util/Glfw.ibc to /home/jan/.stack/snapshots/x86_64-linux-tinfo6/lts-11.17/8.2.2/share/x86_64-linux-ghc-8.2.2/idris-1.3.0/libs/glfw/Graphics/Util

这似乎表明该模块已安装。

我可能误解了 Haskell/Idris/Stack 安装过程和 Idris 模块的某些部分,那么我应该在这里做什么/理解什么?

【问题讨论】:

  • 我应该在回答之前问一下:但是如果您在 Atom 之外启动 REPL 会发生什么,即 stack ghci 是否正常工作?
  • 嘿@dave 我不知道这会是什么角色?

标签: haskell-stack idris


【解决方案1】:

我想问题很简单,项目包含两个ipkg 文件。一个用于库,一个用于测试/示例。 example/hello中的那个:

package test

opts = "-p effects -p glfw " 

executable = hello
main = Main

包含对 idris 包 glfw 的依赖关系,但如果您在*目录中调用 Atom,Atom 看不到。要验证,请切换到目录example/hello 并调用atom . 并从那里尝试。现在 ipkg 文件位于顶层目录中,将被 Atom 拾取。

【讨论】:

    【解决方案2】:

    使用stack 时,REPL 必须通过堆栈启动:stack ghci 而不仅仅是ghci。这将编译并加载库中的模块。

    我不熟悉 Atom,但根据 this,REPL 会尝试猜测正确的 ghci 命令来运行。它得到了错误的命令并且没有运行stack ghci

    【讨论】: