Sie können immer noch extensions: DeriveFunctor
in Ihrer .cabal-Datei verwenden. Ja, es ist keine Erweiterung, die derzeit Cabal bekannt ist, aber Sie können es immer noch verwenden, und solange der Compiler es erkennt, wird es funktionieren. In der Tat wird Cabal prüfen, ob der Compiler die Erweiterung erkennt, obwohl Cabal selbst nichts davon weiß.
Es gibt eine zentrale Registrierung von Erweiterungen im Modul Language.Haskell.Extension
. Der Zweck dieser Registrierung besteht darin, dass verschiedene Compiler sich auf dieselben Namen einigen können, wenn sie dieselben Erweiterungen implementieren. Wir hatten Fälle in der Vergangenheit, in denen Autoren verschiedener Compiler versehentlich dem gleichen Erweiterungskonzept unterschiedliche Namen gegeben haben. Nicht alle Erweiterungen müssen registriert werden. Es macht Sinn, keine Erweiterungen zu registrieren, die noch sehr experimentell sind, zB die DPH-Erweiterungen "PArr" sind noch nicht registriert. Hackage erfordert, dass alle hochgeladenen Pakete nur bekannte registrierte Erweiterungen verwenden, was sinnvoll ist, da eine Erweiterung ausreichend für die Verwendung in einem verteilten Paket ist, dann ist es in Ordnung, sich zu registrieren.
In diesem speziellen Fall scheinen die GHC-Entwickler vergessen zu haben, die Erweiterung zu registrieren.
Es ist auch erwähnenswert, dass ab dem Cabal-1.10 das extensions
Feld in zwei geteilt wird: default-extensions
und other-extensions
. Dies behebt das Problem, dass John in seiner Antwort darauf hinweist, dass das vorherige Verhalten darin besteht, dass alle Erweiterungen für alle Module aktiv sind, was wir als Fehler anerkennen. Das Feld other-extensions
ermöglicht es, die in einigen Modulen verwendeten Erweiterungen (d. H. Das Pragma) aufzulisten. Cabal wird schließlich erzwingen, dass sie alle aufgelistet sind, genau wie es erfordert, dass alle Paketabhängigkeiten aufgeführt sind. Sprachabhängigkeiten sind ebenfalls Abhängigkeiten.
Für welche Version von GHC oder Haskell Platform verwenden Sie> –
Weitere Informationen zur Version hinzugefügt. –
Ich weiß nicht, über diese besondere Warnung, aber ich denke, Hinzufügen eines LANGUAGE Pragma in der Datei ist sowieso die beste Option. –