2017-03-01 2 views
0

Dans mon projet haskell, j'ai la structure de répertoires suivante (certaines entrées sont manquantes mais pas pertinentes à ce problème)Haskell cabale confus au sujet de nom de fichier et le module

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

Mon fichier Settings.hs contient cet en-tête du module

module QuantHas.Settings(module QuantHas.Settings) where 

Mon fichier cabale ressemble à ce

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 

Quand j'exercerai

cabal install --enable-tests 

Je reçois ce message

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

Cela semble mal. Cependant, que faire si nous faisons ce que la cabale attend. Ainsi, l'en-tête du module Settings.hs est maintenant

module Quanthas.Settings(module Quanthas.Settings) where 

Cabal dit maintenant

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

Et il est à ce ppint que je donne et tourne vers SO. Quelqu'un peut-il m'aider à comprendre ce qui se passe?

Versions info: Plate-forme: Macbook Pro exécutant Mac OS 10.12.3 Haskell: 8.0.1 Cabal: 1.24.0.0

Merci!

+0

Vous êtes donc certain que le répertoire 'QuantHas' du système de fichiers est nommé avec le' H' majuscule? Si oui, avez-vous fait quelque chose comme commencer en minuscules et le renommer plus tard? Vous vous demandez si cela peut être quelque chose de mise en cache. –

+0

Oui, il a toujours eu un 'H' dans le nom du répertoire. –

+0

Essayé 'cabal configure' après avoir changé? – arrowd

Répondre

1

La question est qu'il ya une faute de frappe dans l'une des déclarations d'importation dans un module différent. Puisque vous êtes sur un système de fichiers insensible à la casse (OS X), GHC est capable de trouver le contenu du module, mais après avoir vérifié l'en-tête du module, il trouve une erreur de correspondance avec l'instruction d'importation.