Während ich Haskell lerne, sehe ich, dass im realen Code viele Spracherweiterungen verwendet werden. Sollte ich als Anfänger lernen, sie zu benutzen, oder sollte ich sie um jeden Preis vermeiden? Ich sehe, dass es die Kompatibilität mit Haskell 98 unterbricht und den Code auf so ziemlich nur GHC beschränkt. Wenn ich jedoch Pakete auf Hackage durchsuche, sehe ich, dass die meisten sowieso nur GHC sind.
Wie steht die Community zur Verwendung von Spracherweiterungen?
Und wenn die Verwendung von Erweiterungen in Ordnung ist, wie kann ich Erweiterungen, die ich "sicher" verwenden kann (diejenigen, die wahrscheinlich Teil des nächsten Haskell-Standards werden), von denen unterscheiden, die meistens "experimentell" sind? Ich nehme zum Beispiel an, dass -XDisambiguateRecordFields nett und nützlich ist, aber wird es wahrscheinlich in Zukunft unterstützt?
Antworten:
Es gibt einige GHC-Erweiterungen, die zu gut sind, um ohne zu leben. Zu meinen Favoriten gehören
Von diesen sind Multiparameter-Typklassen die wirklich wesentliche.
Einige GHC-Erweiterungen sind sehr spekulativ und experimentell, und Sie sollten sie mit Vorsicht verwenden. Eine gute Möglichkeit, eine stabile und vertrauenswürdige Erweiterung zu identifizieren, besteht darin, zu prüfen, ob sie in Haskell Prime aufgenommen werden soll , das hoffentlich der Nachfolger des Haskell 98 sein wird.
Ich stimme Don Stewarts Vorschlag zu, dass jede Erweiterung mit dem
LANGUAGE
Pragma in der Quelldatei markiert werden sollte . Nicht ermöglichen Erweiterungen Befehlszeilenoptionen.quelle
Ja, verwenden Sie gegebenenfalls Erweiterungen.
Aber stellen Sie sicher, dass Sie sie absichtlich aktivieren - nur wenn Sie sich entscheiden, dass Sie sie brauchen. Tun Sie dies auf Modulbasis über
{-# LANGUAGE Rank2Types #-}
(zum Beispiel).quelle
Im Allgemeinen verwenden die Leute GHC-Erweiterungen ziemlich häufig, weil sie so nützlich sind und Haskell 98 ziemlich alt ist. Sobald es einen aktuelleren Standard gibt, können sich die Leute mehr Mühe geben, sich daran zu halten.
Den Status der Vorschläge für den nächsten Standard finden Sie hier .
quelle
Die anderen Antworten hier sind gut. Ich würde hinzufügen, dass GHC-Erweiterungen nicht so zukunftsfähig sind (*), wie sie sein könnten, da GHC bei weitem der beliebteste Haskell-Compiler zu sein scheint, und ich sehe, dass sich dies nicht bald ändert.
(*) wie im Gegenteil von "zukunftssicher"
quelle