次のように型クラスを実装することは可能ですか:
class SomeClass e where
isEq :: (SomeClass e') => e -> e' -> Bool
とがこの型クラスの同じインスタンスである場合、どこでisEq x y
true を返しますか?x
y
コンテキスト: これは、実行時の型テストを取得するための薄いベールに包まれた試みです。Haskell には型消去機能があることを最初に読みましたが、最近の GHC の拡張機能、そこに実行時の情報が含まれていることも読みました。
編集:私のユースケースについて疑問に思っている人のために...私は、タイプレベルのプログラミングを使用して、ADTの一部の特定のプロパティ、つまりリソースの使用を保証しています。これらのリソースは個別のタイプで表されます (したがって、リソース ロックはタイプ レベルで実装されます)。
リソースの書き込み/読み取りの識別を必要とする最適化手順を作成しようとしています。しかし、私のすべてのリソースは個別のシングルトンで表されているため、その唯一の共通要素 (すべての値が下にあることを除く) は、それらをグループ化する型クラスです。
一言で言えば、型レベルのプログラミングの結果を実行時の値レベルで使用したいと考えています。