gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:55:06 24 4
gpt4 key购买 nike

我从 Unix 的一个项目中创建了一些文件,它们很多,如果我想在另一台电脑或文件夹中执行它,我需要将所有文件复制到那里。它们都在导入中连接。
如何制作可执行的 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.hsex2.hsEx1.hsEx2.hs .它们还应该以 module Ex1 where 开头,否则模块名称将默认为 Main ,而当模块名与文件名不匹配时,GHC 会很困惑。
  • 导入语句应该引用模块名,而不是文件名,所以在 main.hs 中更改它们对应于模块名称。
    import Ex1
    import Ex2
  • 现在用 ghc --make main.hs 编译,它应该会自动找到其他模块。它将搜索具有 .hs 的模块和 .lhs扩展名,并正确对待后者,就像识字的 Haskell 文件一样。

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

    关于unix - 编译 Haskell 的多个 .hs 文件 - Unix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8935082/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com