Frage

Als ich Haskell lerne, wie ich sehe, dass es eine Menge von Spracherweiterungen im wirklichen Leben Code verwendet. Als Anfänger sollte ich lernen, sie zu benutzen, oder sollte ich vermeiden, dass sie um jeden Preis? Ich sehe, dass es die Kompatibilität mit Haskell 98 und Grenzen Code bricht nur ziemlich GHC. Allerdings, wenn ich Pakete auf Hackage zu sehen, wie ich sehe, dass die meisten von ihnen sind GHC-only sowieso.

So

Was ist eine Haltung der Gemeinschaft gegenüber Spracherweiterungen mit?

Und wenn die Verwendung von Erweiterungen in Ordnung ist, wie kann ich Erweiterungen unterscheiden, die ich von denen, die meist „experimentell“ verwenden kann, „sicher“ (wahrscheinlich sind Teil des nächsten Haskell Standard werden jene, die)? Zum Beispiel nehme ich an, dass -XDisambiguateRecordFields ist schön und nützlich, aber es ist wahrscheinlich in der Zukunft unterstützt werden?

War es hilfreich?

Lösung

Es gibt einige GHC-Erweiterungen, die zu gut sind, zu leben, ohne. Unter meinen Favoriten sind

  • Multitypklassen
  • Scoped Typ Variablen
  • höherrangigen Typen
  • Generalized algebraische Datentypen (GADTs)

diese Von dem wirklich wichtig sind Klassen Multi Typ.

Einige GHC Erweiterungen sind sehr spekulativ und experimentell, und Sie können mit Vorsicht verwendet werden soll. Ein guter Weg, um eine stabile und vertrauenswürdige Erweiterung zu identifizieren, ist zu sehen, ob es für die Aufnahme in Haskell Prime ist geplant , die gehofft wird der Nachfolger der Haskell 98 zu sein.

Ich zweiten Don Stewart Vorschlag, dass jede Erweiterung markiert werden soll, die LANGUAGE Pragma in der Quelldatei verwenden. nicht ermöglicht Erweiterungen Befehlszeilenoptionen verwenden.

Andere Tipps

Ja, verwenden Erweiterungen als angemessen.

Aber sicher sein, sie aktivieren absichtlich - nur dann, wenn Sie sich entscheiden, Sie sie benötigen. Tun Sie dies auf einer Pro-Modulbasis über {-# LANGUAGE Rank2Types #-} (zum Beispiel).

Generell Menschen tun GHC Erweiterungen verwenden ziemlich schwer, weil sie so nützlich sind und Haskell 98 ist ziemlich alt. Sobald es auf dem neuesten Stand einen Standard Menschen können mehr tun, um es zu halten.

Sie können den Status von Vorschlägen für den nächsten Standard finden hier .

Die anderen Antworten hier sind gute. Ich möchte hinzufügen, dass GHC-Erweiterungen sind nicht als zukunfts verwundbar (*), wie sie auch sein mögen, weil GHC weit weg zu sein, das populärste Haskell Compiler scheint, und ich sehe nicht, dass das Ändern bald.

(*) wie im Gegenteil von "zukunftssicher"

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top