型を型クラスの一部にすることは可能ですか?何かのように:ハスケル:型式(型格)を定義できます
class KeyTraits v where
keyType :: *
key :: v -> keyType
data TableRow = { date :: Date, metaData :: String, value :: Int }
instance KeyTraits TableRow where
keyType = Date
key = date
これらの "タイプレベル"機能は他の場所で使用できますか?たとえば:
-- automatically deduce the type for the key, from the value type, using
-- the typeclass
data MyMap v = { getMap :: (KeyTraits v) => Map (keyType) v }
私は完全に間違って何かをすることができるが、私は基本的に(例えば、ある特定の値は、すでにキーとして使用することができるデータを持っている場合があります)上記のようなタイプの関係を定義する機能が欲しいです。それが不可能な場合、または困難な場合は、より慣れたより優れたデザインを提案できますか?
ありがとうございました!
ありがとうございました!もう1つの答えは質問のタイトルに直接結びついていますが、あなたの解決策も同様です。 –
私は、MPTC + FDが複雑な依存関係を持ついくつかのエッジのケースではTFよりも表現力があったという印象を受けました... –