Je possède ce graphe de dépendance (en ignorant les dépendances des modules tiers):GHC affirme le module uniquement disponible en tant que module de démarrage quand il ne doit pas être
Main:
GSI.Util
GSI.Value
GSI.Result
GSI.Eval
GSI.ByteCode
GSI.Thread
GSI.Main:
GSI.Value
GSI.ByteCode
GSI.Thread:
GSI.Util
GSI.RTS
GSI.Value
GSI.Result
GSI.Eval
GSI.Eval:
GSI.Util
GSI.RTS
GSI.Value
GSI.Result
ACE
GSI.Eval (.hs-boot):
GSI.Value
ACE:
GSI.RTS
GSI.Value
GSI.ByteCode
GSI.Result
{-# SOURCE #-} GSI.Eval
GSI.ByteCode:
GSI.Util
GSI.Value
{-# SOURCE #-} GSI.Thread
GSI.ByteCode (.hs-boot):
{-# SOURCE #-} GSI.Value
{-# SOURCE #-} GSI.Thread
GSI.Result:
GSI.Util
GSI.RTS
GSI.Value
GSI.Value:
GSI.Util
GSI.RTS
{-# SOURCE #-} GSI.ByteCode
(j'aimerais réduire ce graphique vers le bas plus loin, mais honnêtement, je suis perdu quant aux pièces qui sont pertinentes: les fichiers .hs-boot non listés n'ont pas de dépendances sur mon code). Quand je fais
ghc --make Main.hs
Je reçois ce message:
[10 of 13] Compiling ACE (ACE.hs, ACE.o) [GSI.ByteCode changed]
module GSI.Thread cannot be linked; it is only available as a boot module
Qu'est-ce que sur la terre? J'importe GSI.Thread pas comme un module de démarrage de Main, alors comment GHC peut-il affirmer qu'il n'est disponible qu'en tant que module de démarrage? (? Et, d'ailleurs, pourquoi ne peut GHC simplement détecter cette situation et inclure le module non-démarrage automatique)
Bien 'ACE' n'est pas' Main' et 'ACE' (mais pas' Main') est impliqué dans un cycle d'importation avec 'GSI.Thread', donc ce message ne semble pas déraisonnable. Vous avez un Template Haskell ou quelque chose dans 'ACE'? –
@ReidBarton - Je ne comprends pas du tout. Vous semblez savoir ce que ce message d'erreur signifie - et Google ne le fait pas - alors peut-être pourriez-vous expliquer cela? Je suis complètement perdu. –
Je ne sais pas vraiment ce que ça veut dire, sauf que ça vient du linker ghci, donc vous devez utiliser Template Haskell ou quelque chose comme ça. –