说我有一些像这样的文件夹:
\Code
\Haskell
\euler
\P1.hs
\P2.hs
\P3.hs
\fermat
\GS
\primes.hs
Run Code Online (Sandbox Code Playgroud)
我写的一些函数是我primes.hs想用的P3.hs.有没有办法从加载功能primes.hs到P3.hs不只是复制和粘贴代码,类似于你可以导入在同一个文件夹中的模块的方式吗?这可以用Cabal完成(我对Haskell很新,我还没有机会熟悉Cabal)?我知道有一些方法可以通过primes.hs手动加载ghci来实现,但我希望能够运行P3.hs并让它工作.
如果您创建cabal项目,这非常简单.我会推荐像这样的结构
project-name/
src/
Euler/
P1.hs
P2.hs
P3.hs
Fermat/
GS/
Primes.hs
Run Code Online (Sandbox Code Playgroud)
然后当你cd /path/to/project-name运行时cabal init,在它提示你的时候填写信息,然后你就可以了.您需要做的最后一件事是设置模块名称.模块的名称应反映其在您的src文件夹中的位置,并且由于所有模块名称必须以大写字母开头,这意味着您还需要确保文件夹的大小写正确.在这里,您将有模块Euler.P1,Euler.P2,Euler.P3,和Fermat.GS.Primes.根据需要module Module.Name where在每个文件中声明模块名称,然后您可以根据需要相互导入.模块导入总是完全合格的为好,所以如果你想导入src/Euler/P1.hs的src/Euler/P2.hs,你需要做的import Euler.P1
你可能会遇到一些障碍,但从长远来看,使用cabal来管理你的项目是非常有用的.学习基础知识,您将轻松地设置项目.