cabal repl对库与可执行文件的不同行为

Kar*_*arl 7 haskell ghc ghci cabal cabal-install

cabal repl在库项目中使用时,使用似乎什么都不做,但对可执行项目工作正常.这是我不明白的预期行为吗?

如果我有一个简单的文件

go = putStrLn "test"
Run Code Online (Sandbox Code Playgroud)

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

直接加载到GHCi时,代码工作正常.

bhe*_*ilr 7

对于cabal repl加载你的模块,您必须先为它们命名的代码,然后在项目的指定它们.cabal文件曝光:


-- MyModule.hs
module MyModule where

go = putStrLn "test"
Run Code Online (Sandbox Code Playgroud)
-- MyProject.cabal
name: MyProject
-- other info ...

library
    exposed-modules: MyModule
    -- other options ...
Run Code Online (Sandbox Code Playgroud)

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