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
コマンドラインオプションを使用して拡張機能を有効にします。
関連
-
[解決済み] 読んで学ぶべき良いHaskellのソース [終了しました]。
-
[解決済み】Template Haskellの何がそんなに悪いのか?
-
[解決済み] 制約条件付き特殊化
-
[解決済み】Haskellの入門編
-
[解決済み】Haskell/GHCの`forall`キーワードは何をするのですか?
-
[解決済み] Haskellの "Just "構文とは?
-
[解決済み] HaskellとF#の主な違いは何ですか?[クローズド]
-
[解決済み] mtl、トランスフォーマー、monads-fd、monadLib、そして選択のパラドックス
-
[解決済み] キュアリングを利用するためのパラメータの順序付け
-
[解決済み] Haskellの次に学ぶべき言語とは?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Haskell - Ord aの型は何を意味するのでしょうか?
-
[解決済み] Hindley-Milnerのどの部分が理解できないのでしょうか?
-
[解決済み] Haskellで大規模設計?[クローズド]
-
[解決済み] Haskellの関数合成(.)と関数応用($)イディオム:正しい使い方
-
[解決済み] 無限リストでのfoldlとfoldrの動作
-
[解決済み] Real World Haskellのどの部分が今となっては時代遅れ、あるいはバッドプラクティスと考えられているのでしょうか?
-
[解決済み] mtl、トランスフォーマー、monads-fd、monadLib、そして選択のパラドックス
-
[解決済み] Haskellのストリクトネスポイントは何ですか?
-
[解決済み] Lazy I/Oの何がそんなに悪いのか?
-
[解決済み] MonadPlus, Alternative, Monoidの型別は?