新しい拡張機能と古い拡張機能の両方で提供される言語機能を必要とする新しい Haskell プロジェクトを開始する場合、どちらを使用すればよいですか? 新しいものですか、それとも古いものですか?例えば:
- GADTはExistentialQuantificationに取って代わります。
- 多くの場合、TypeFamiliesはFunctionalDependenciesに取って代わります。
- など(さらに例がある場合は、ここに自由に追加してください)
新しいものはよりクリーンで、統合された方法でより多くの機能を言語に追加しているため、私はより新しいものに傾倒しています。ただし、古いものはより多くのコンパイラでサポートされており、既存のライブラリで使用されており、おそらくプログラマーの間でもよく知られています。
更新:回答/コメントで述べたように、上記の「置き換え」関係は完全に正確ではありません。ただし、タスクが複数の拡張機能によって同等に達成できる (よく発生する) ケースに興味があります。