Vous pouvez toujours utiliser extensions: DeriveFunctor
dans votre fichier .cabal. Oui, ce n'est pas une extension actuellement connue de Cabal, mais vous pouvez toujours l'utiliser et tant que le compilateur le reconnaîtra, cela fonctionnera. En effet, Cabal vérifiera que le compilateur reconnaît bien l'extension, même si Cabal n'en sait rien.
Il existe un registre central des extensions dans le module Language.Haskell.Extension
. Le but de ce registre est de permettre aux différents compilateurs de s'accorder sur les mêmes noms lorsqu'ils implémentent les mêmes extensions. Nous avons eu des cas dans le passé où les auteurs de différents compilateurs ont accidentellement donné des noms différents au même concept d'extension. Toutes les extensions ne doivent pas être enregistrées. Il est logique de ne pas enregistrer les extensions qui sont encore très expérimentales, par exemple les extensions DPH "PArr" ne sont toujours pas enregistrées. Hackage exige que tous les paquets téléchargés n'utilisent que des extensions enregistrées connues, ce qui est logique car si une extension est suffisamment prête à être utilisée dans un paquet distribué, alors il est autorisé de s'enregistrer.
Dans ce cas particulier, les développeurs GHC semblent avoir oublié d'enregistrer l'extension.
Il convient également de noter qu'à partir de Cabal-1.10, le champ extensions
est divisé en deux: default-extensions
et other-extensions
. Cela résout le problème que John souligne dans sa réponse, que le comportement précédent est que toutes les extensions sont actives pour tous les modules, ce que nous reconnaissons comme une erreur. Le champ other-extensions
permet de répertorier les extensions utilisées dans certains modules (c'est-à-dire avec le pragma LANGUAGE
). Cabal finira par appliquer qu'ils sont tous listés, tout comme il exige que toutes les dépendances de paquet soient listées. Les dépendances de langue sont aussi des dépendances.
Quelle version de la plate-forme GHC ou Haskell utilisez-vous?> –
Plus d'informations sur la version ajoutée. –
Je ne connais pas cet avertissement particulier, mais je pense que l'ajout d'un pragma LANGUAGE dans le fichier est la meilleure option de toute façon. –