スライド30/78 thisプレゼンテーションでは、タイプクラスの実装が最初は「絶望」であったことをSimonは示唆しています。それが誰に気付いたのですか?なぜ型クラスを実装するのが難しいのですか?
答えて
私は先行技術がないときにhbcで実装して以来、なぜ難しいのかの最初の手の経験がある少数の人々だと思います。
Wadler & Blott紙から明らかなことは、タイプチェックがHindley-Milnerタイプチェックの延長であり、実行時に辞書を渡すべきだったということでした。それから実際の実装まではかなり大きなステップです。困難を理解する良い方法は、Wadler-Blott紙だけから実際に実装することです。
まず、タイプのチェックだけでなくプログラムの変換も行うタイプチェッカーの考え方を思いつく必要があります。型検査中に証拠(辞書)を挿入する。また、インスタンス宣言を推論システムとして使用して古い辞書から新しい辞書を構築する方法を理解する必要があります。
遡ってみると分かりやすいかもしれませんが、その時以来、説明付きの多くの論文が書かれています。紙から何かをする方法を理解することは、最初にそれを思いつくこととはまったく異なっています。
さらに、タイプクラスを合理的に効率的にすることで、独自の問題が発生しやすくなります。
あなたがどこかに投稿したい(または持っている)場合は、この物語のより長いバージョンが大好きです。 –
@ JohnF.Millerさて、20年以上前のことです。詳細はもはや私の記憶の中ではっきりしません。 – augustss
詳細をご覧ください。あなたが言及した論文を指すこともできますか? –
- 1. Java 7のダイヤモンド演算子:なぜ実装が難しいのですか?
- 2. T-SQLでループを実行するのがなぜ難しいのですか
- 3. 剣道UIでグラフウィジェットを実装するのが難しい
- 4. C++でリンクリストを実装するのが難しい
- 5. Stringクラスで携帯型ライブラリのIEnumerable <char>が実装されないのはなぜですか?
- 6. JavaがArrayListクラスを使用してHashtable/HashMapクラスを実装していないのはなぜですか?
- 7. カーネルモードでのデバッグが難しいのはなぜですか?
- 8. なぜインタフェース実装がより特定の型を返すことができないのですか?
- 9. なぜRubyでのメモリプロファイリングが難しいですか?
- 10. なぜjavaのHttpServletがシリアライザブルを実装していますか?
- 11. IEnumerableを実装しているクラスでLINQメソッドを使用できないのはなぜですか?
- 12. なぜPythonにネイティブリンクリスト実装がないのですか?
- 13. IntegerPropertyがプロパティ<Number>を実装し、プロパティ<Integer>を実装しないのはなぜですか?
- 14. スレッドがIDisposableを実装していないのはなぜですか?
- 15. java.util.ListがSerializableを実装していないのはなぜですか?
- 16. インターフェイスメソッド戻り値の型は、インターフェイスを実装するクラスです。
- 17. Django AdminSite - 難しくて簡単な実装ですか?
- 18. Javaクラスが実装されたインタフェースからアノテーションを継承しないのはなぜですか?
- 19. PDOのOracleドライバがlastInsertId()を実装しないのはなぜですか?
- 20. クラスで実装されているC#インターフェイスメソッドを公開する必要があるのはなぜですか?
- 21. Ruby LinkedList実装で変数/ポインタを理解するのが難しい
- 22. NSUndoManagerのやり直し機能を実装するのが難しい
- 23. クラスを実装していないインタフェースにクラスをキャストするときにコンパイラエラーが発生しないのはなぜですか?
- 24. クラスの内部イベントが内部インターフェイスのイベントを実装できないのはなぜですか?
- 25. 私のクラスが内部で宣言されたインタフェースを実装できないのはなぜですか?
- 26. コンパイラが型変換を実行しないのはなぜですか?
- 27. なぜXMLをpdfに変換するのが難しいですか?
- 28. なぜこのように実装された短縮型のCompareToですか?
- 29. [TestFixture]のないクラスを実行しているResharper Testrunner - なぜですか?
- 30. IExceptionHandlerの実装がエラー応答を返さないのはなぜですか?
ハスケル伝承の専門家ではありませんが、これまでに行われたことがなかった可能性があります。 –
これは確かですが、常にそうです:)しかし、型クラスの場合、何が問題を引き起こしましたか? –
@ŁukaszLew - いいえ、私が理解する限り、これはWadlerとBlottの全く新しいアイデアでした。たとえば、他のソリューションには対応できませんでした。 – Ingo