我正试图在Haskell第一次构建一个独立的程序,并且很难弄清楚如何获得ghc --使用我喜欢的目录组织。就像我有一棵树一样:
readme.md
src/
Main.hs
Ciphers/
Affine.hs
Shift.hs
Substitution.hs
Tests/
HCTests.hs与下列进口:
Main.hs:
module Main where
import Tests.HCTests
import Ciphers.Affine
import Ciphers.Shift
import Ciphers.SubstitutionHCTests.hs
module Tests.HCTests (unitTests) where
import Ciphers.Substitution
import Ciphers.Affine
import Ciphers.ShiftAffine.hs
module Affine (
affineEnc,
affineDec,
) whereShift.hs
module Shift (
shiftEnc,
shiftDec
) where
import AffineSubstitution.hs
module Substitution (
substitutionEnc,
substitutionDec,
) where基于这个-- 节目 --在我看来,下面的命令至少应该正确地处理主要的导入,尽管我不清楚HCTests中的导入是否有效(在我看来,如果我正确地阅读-- 指定“向上树”Haskell模块 --它们应该)。
我在基目录中运行的命令是:
ghc -O2 --make -i src -o crypto Main.hs失败时出错:
target `src' is not a module name or a source file编辑
我还有一个问题。多亏了Zeta的回答,我得到了排序,但是当我运行它时,我得到了以下错误:
src/Ciphers/Substitution.hs:5:8:
File name does not match module name:
Saw: `Substitution'
Expected: `Ciphers.Substitution'所以我的假设是我会通过:
Substitution.hs
module Ciphers.Substitution (
substitutionEnc,
substitutionDec,
) where我的问题是,我如何处理Shift.hs需要导入Affine.hs,而我仍然需要Ciphers.Shift和Ciphers.Affine?
发布于 2014-04-07 15:05:44
您可能不会用空格分隔命令行选项-i和搜索路径,因为具有以下空格的-i重置了搜索路径。
使用
ghc -O2 --make -isrc -o crypto Main.hs或
ghc -O2 --make -i./src -o crypto Main.hs而不是。
https://stackoverflow.com/questions/22916110
复制相似问题