[解決済み] Haskellの派生はどのように行われるのですか?
2022-09-26 18:50:47
質問
代数的
データ型
(ADT)のインスタンスになることができます。
型クラス
のような)。
Show
,
Eq
) による
導出
である。
data Maybe a = Nothing | Just a
deriving (Eq, Ord)
質問ですが、この
deriving
はどのように機能するのか、つまり、Haskell はどのように派生 ADT の派生型クラスの関数を実装するのか知っているのだろうか?
また、なぜ
deriving
は特定の型クラスだけに制限されているのか?なぜ派生可能な独自の型クラスを書くことができないのでしょうか?
どのように解決するのですか?
簡単に言うと、マジックです :-). つまり、自動的な導出は Haskell 仕様に組み込まれており、すべてのコンパイラは独自の方法でそれを実装することを選択できます。しかし、それを拡張可能にする方法については多くの作業があります。
導出 は、独自の派生機構を記述するためのHaskell用ツールです。
GHC は以前、派生可能な型クラス拡張として 汎用クラス という派生可能な型クラス拡張を提供していましたが、やや弱かったため、ほとんど使用されませんでした。 現在ではこの機能は削除され、この論文で説明されているような新しい汎用的な導出機構を統合する作業が進行中です。 http://www.dreixel.net/research/pdf/gdmh.pdf
これについては
関連
-
[解決済み】Haskellでの挿入ソート
-
[解決済み] なぜHaskellでは整数の割り算ができないのか?
-
[解決済み] Haskellです。パターンでのパースエラー
-
[解決済み] Haskell タプルをリスト化する?
-
[解決済み] フリーモナドとは何ですか?
-
[解決済み】Weak Head Normal Formとは何ですか?
-
[解決済み] Haskellのリストを参照する際の「@」記号の意味は?
-
[解決済み】Haskellの入門編
-
[解決済み] Java の Interface と Haskell の type class: 違いと類似点?
-
[解決済み] Haskellのガードとif-then-elseとcaseの比較
最新
-
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では整数の割り算ができないのか?
-
[解決済み] 機能における非網羅的なパターン【重複あり
-
[解決済み] Haskell Preludeの'const'は何のためにあるのか?
-
[解決済み] Haskellです。パターンでのパースエラー
-
[解決済み] Hindley-Milnerのどの部分が理解できないのでしょうか?
-
[解決済み] .の違いは何ですか?(ドット)と$(ドルマーク)の違いは何ですか?
-
[解決済み] Haskellで副作用がモナドとしてモデル化されているのはなぜですか?
-
[解決済み] ghciで関数を複数行に渡って定義するには?
-
[解決済み] レコードの単一フィールドを割り当て、残りのフィールドはコピーするための省略記法?
-
[解決済み] HaskellとF#の主な違いは何ですか?[クローズド]