簡體   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