Haskellの型クラスの可能な実装とは何ですか?それらの(欠点)は何ですか?


9

私の知る限り、型クラスの制約を持つHas​​kell関数は、特定の各型クラスの必要な実装を持つ辞書を受け取る追加の引数を持つ関数に内部的にコンパイルされます。

  • 型クラスをコンパイルする方法は他にありますか?
  • もしそうなら、彼らの(不)利点は何ですか?
  • そして、どのコンパイラがそれらを使用しますか?

4
この件に関してはかなりの文献があります。多分、J。Peterson、M. JonesによるImplementing Type Classesから始めましょう。また、OliveiraらによるType Classes as Objects and Implicitsも参照できます。これは、Scalaのコンテキストでこれについて説明していますが、関連する作業についてはかなり大きなセクションがあります。
Martin Berger


1
@MartinBergerはこれを答えにしますか?
Suresh Venkat 2012


@Suresh Venkat、私はこれら2つが最良であるかどうか、または良い答えであるかどうかわからないので、答えにしたくありませんでした。関数型言語の実装を見たのは久しぶりです。たぶん、レジデントFPボッドの一部が鳴り響くかもしれません。–
Martin Berger

回答:


8

JHCは別のアプローチを使用しています。コンパイラの中間言語は、型と値の区別がない依存型のラムダ計算です。したがって、JHCは関数の型パラメーターでケース分析を実行し、正しいオーバーロードされた関数を直接呼び出すことができます。

JHCのウェブサイトでは、標準の辞書を渡す実装よりも優れているだけでなく、実装についても詳しく説明しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.