[英]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.