Haskell 阴谋集团对文件和模块名称感到困惑

西蒙·柯蒂尼奇

在我的 haskell 项目中,我有以下目录结构(缺少一些条目但与此问题无关)

- quanthas
   - quanthas.cabal
   - src/
      - QuantHas/
         - Settings.hs

我的 Settings.hs 文件包含这个模块头

module QuantHas.Settings(module QuantHas.Settings) where

我的阴谋文件看起来像这样

Name:               QuantHas
Version:            0.0
Description:
    QuantHas project is an attempt to port QuantLib to Haskell keeping the functional flavor of Haskell.
License:            BSD3
License-file:       LICENSE
Build-Type:         Simple
Cabal-Version:      >=1.10

Library
  Build-Depends:    base >= 3 && < 5, array >= 0.2
  Exposed-modules:  QuantHas.Time.Frequency
                QuantHas.Time.TimeUnit
                QuantHas.Time.Period
                QuantHas.Time.Date
                QuantHas.Time.DayCounter
                QuantHas.Time.BusinessDayConvention
                QuantHas.Time.Calendar
                QuantHas.Time.Calendars.UnitedKingdom
                QuantHas.Time.Schedule
                QuantHas.Settings
                QuantHas.Require
  default-language: Haskell2010                 
  hs-source-dirs:   src
  --  ghc-options:      -Wall

test-suite QuantHas-tests
  type: exitcode-stdio-1.0
  hs-source-dirs: testsuite
  main-is: Tests.hs
  default-language: Haskell2010  

当我执行

cabal install --enable-tests

我收到这条消息

src/Quanthas/Settings.hs:17:8: error:
   File name does not match module name:
   Saw: ‘QuantHas.Settings’
   Expected: ‘Quanthas.Settings’

这似乎是错误的。但是,如果我们按照阴谋集团的期望去做该怎么办。所以 Settings.hs 模块头现在是

module Quanthas.Settings(module Quanthas.Settings) where

阴谋集团现在说

src/QuantHas/Settings.hs:17:8: error:
   File name does not match module name:
   Saw: ‘Quanthas.Settings’
   Expected: ‘QuantHas.Settings’

正是在这一点上,我放弃并转向 SO。谁能帮我理解发生了什么?

版本信息:平台:Macbook Pro 运行 MacOS 10.12.3 Haskell:8.0.1 Cabal:1.24.0.0

谢谢!

迈克尔·斯诺曼

问题是在不同模块中的一个导入语句中存在拼写错误。由于您在不区分大小写的文件系统 (OS X) 上,GHC 能够找到模块内容,但在检查模块头时发现它与导入语句不匹配并出现错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章