首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ghc -使模块层次结构

ghc -使模块层次结构
EN

Stack Overflow用户
提问于 2014-04-07 15:01:09
回答 1查看 664关注 0票数 1

我正试图在Haskell第一次构建一个独立的程序,并且很难弄清楚如何获得ghc --使用我喜欢的目录组织。就像我有一棵树一样:

代码语言:javascript
复制
readme.md
src/
  Main.hs
  Ciphers/
    Affine.hs
    Shift.hs
    Substitution.hs
  Tests/
    HCTests.hs

与下列进口:

Main.hs:

代码语言:javascript
复制
 module Main where

 import Tests.HCTests
 import Ciphers.Affine
 import Ciphers.Shift
 import Ciphers.Substitution

HCTests.hs

代码语言:javascript
复制
module Tests.HCTests (unitTests) where

import Ciphers.Substitution
import Ciphers.Affine
import Ciphers.Shift

Affine.hs

代码语言:javascript
复制
module Affine (
  affineEnc,
  affineDec,
  ) where

Shift.hs

代码语言:javascript
复制
module Shift (
  shiftEnc,
  shiftDec
  ) where

import Affine

Substitution.hs

代码语言:javascript
复制
module Substitution (
  substitutionEnc,
  substitutionDec,
  ) where

基于这个-- 节目 --在我看来,下面的命令至少应该正确地处理主要的导入,尽管我不清楚HCTests中的导入是否有效(在我看来,如果我正确地阅读-- 指定“向上树”Haskell模块 --它们应该)。

我在基目录中运行的命令是:

代码语言:javascript
复制
ghc -O2 --make -i src -o crypto Main.hs

失败时出错:

代码语言:javascript
复制
target `src' is not a module name or a source file

编辑

我还有一个问题。多亏了Zeta的回答,我得到了排序,但是当我运行它时,我得到了以下错误:

代码语言:javascript
复制
src/Ciphers/Substitution.hs:5:8:
    File name does not match module name:
    Saw: `Substitution'
    Expected: `Ciphers.Substitution'

所以我的假设是我会通过:

Substitution.hs

代码语言:javascript
复制
module Ciphers.Substitution (
  substitutionEnc,
  substitutionDec,
  ) where

我的问题是,我如何处理Shift.hs需要导入Affine.hs,而我仍然需要Ciphers.Shift和Ciphers.Affine?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-07 15:05:44

您可能不会用空格分隔命令行选项-i和搜索路径,因为具有以下空格的-i重置了搜索路径

使用

代码语言:javascript
复制
ghc -O2 --make -isrc -o crypto Main.hs

代码语言:javascript
复制
ghc -O2 --make -i./src -o crypto Main.hs

而不是。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22916110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档