繁体   English   中英

编译Haskell的多个.hs文件 - Unix

[英]Compile multi .hs files of Haskell - Unix

我在Unix中的一个项目中创建了一些文件,它们很多,如果我想在另一个PC或文件夹中执行它,我需要将所有文件复制到那里。 它们都是导入连接的。 如何制作可执行的haskell程序?

我有例子:

main.hs - main where all the program executes; using,besides haskell, unix shell.
ex1.hs - basically types of data, some functions.
ex2.lhs - same as ex1.lhs but is literate with LaTeX
pic.jpg - picture to use on the pdflatex
package.sty - package needed to use some functions

我如何进行并编译所有这些? 我尝试使用ghc但总是出错:

>ghc -o MAIN main.hs ex1.hs ex2.lhs pic.jpg package.sty

Failed to load interface for 'ex1.hs'并且在导入ex1.hs的行中

好奇的是,如果我交易导入ex1.hs 导入ex2.lhs行将在ex2上给出错误

  1. Haskell模块名称必须以大写字母开头,因此首先将ex1.hsex2.hs重命名为Ex1.hsEx2.hs 它们也应该从module Ex1 where开始,否则模块名称将默认为Main ,当模块名称与文件名不匹配时GHC将非常混淆。

  2. Import语句应该引用模块名称,而不是文件名,因此在main.hs更改它们以对应模块名称。

     import Ex1 import Ex2 
  3. 现在用ghc --make main.hs编译,它应该自动找到其他模块。 它将搜索具有.hs.lhs扩展名的模块,并正确地将后者视为有文化的Haskell文件。

对于大型项目,您应该考虑使用Cabal ,这是大多数Haskell库和程序使用的构建系统。 它将有助于管理依赖项和编译器选项,有点像Makefile。

尝试

ghc --make main.hs

这应该让ghc尝试做它能做的一切......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM