[英]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上给出错误
Haskell模块名称必须以大写字母开头,因此首先将ex1.hs
和ex2.hs
重命名为Ex1.hs
和Ex2.hs
它们也应该从module Ex1 where
开始,否则模块名称将默认为Main
,当模块名称与文件名不匹配时GHC将非常混淆。
Import语句应该引用模块名称,而不是文件名,因此在main.hs
更改它们以对应模块名称。
import Ex1 import Ex2
现在用ghc --make main.hs
编译,它应该自动找到其他模块。 它将搜索具有.hs
和.lhs
扩展名的模块,并正确地将后者视为有文化的Haskell文件。
对于大型项目,您应该考虑使用Cabal ,这是大多数Haskell库和程序使用的构建系统。 它将有助于管理依赖项和编译器选项,有点像Makefile。
尝试
ghc --make main.hs
这应该让ghc尝试做它能做的一切......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.