7

在库项目中使用cabal repl时似乎什么都不做,但对于可执行项目来说效果很好。这是我不理解的预期行为吗?

如果我有一个文件只包含

go = putStrLn "test"

并使用cabal init所有默认值(但选择“库”作为类型),然后运行cabal repl只会产生一些关于配置和预处理库的文本,并且永远不会进入 REPL 环境。完全相同的步骤,但选择“可执行”作为类型,让我按预期进入 GHCi。

该代码在直接加载到 GHCi 时工作正常。

4

1 回答 1

7

cabal repl加载您的模块,您必须首先在代码中命名它们,然后在项目.cabal文件中将它们指定为公开的:


-- MyModule.hs
module MyModule where

go = putStrLn "test"

-- MyProject.cabal
name: MyProject
-- other info ...

library
    exposed-modules: MyModule
    -- other options ...

然后,当您运行时cabal repl,它将可以访问沙箱中的所有内容(如果存在)和暴露的模块。如果您将它们指定为other-modules而不是 ,它也可能有效exposed-modules,但我还没有尝试过。

于 2014-06-02T18:52:17.953 回答