1. ホーム
  2. haskell

GHCのHaskell拡張は使うべきか否か?

2023-09-19 02:20:53

質問

Haskellを学習していると、たくさんの 言語拡張 が実際のコードで使われています。初心者の私は、それらを使うことを学ぶべきでしょうか、それとも何が何でも避けるべきでしょうか?Haskell 98 との互換性を壊し、コードをかなり GHC だけに制限しているのはわかります。しかし、Hackageでパッケージをブラウズすると、それらのほとんどはとにかくGHCのみであることがわかります。

では、言語拡張を使うことに対するコミュニティの姿勢はどうなのでしょうか?

また、拡張機能の使用がOKなら、「安全に」使える拡張機能(次のHaskell標準の一部になりそうなもの)と、ほとんどが「実験的」なものをどう見分ければいいのでしょうか?例えば、私が思うに -XDisambiguateRecordFields は素敵で便利だと思いますが、将来的にサポートされる可能性はありますか?

どのように解決するのですか?

GHCの拡張機能の中には、これなしでは生きていけないというものがあります。 中でも私のお気に入りは

  • マルチパラメータ型クラス
  • スコープ付き型変数
  • 高ランクの型
  • 一般化された代数的データ型 (GADTs)

これらのうち、本当に必要なものはマルチパラメーター型クラスです。

GHCの拡張機能の中には、非常に思索的で実験的なものもあり、注意して使用したいものです。 安定した信頼できる拡張を見分ける良い方法は、それが Haskell Prime に含まれる予定であるかどうかを確認することです。

私はDon Stewartの提案に賛成です。 LANGUAGE プラグマを使ってマークするべきだという Don Newart の提案に賛成です。 Don't コマンドラインオプションを使用して拡張機能を有効にします。