是否有可能讓某個類型成爲類型類的一部分?例如:Haskell:類型類是否可以定義類型(ala類型特徵)
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 }
我可能會做一些完全錯誤的,但我基本上要定義像上面的(例如某些值已經可以具有可以被用作主要數據)型關係的能力。如果這是不可能的,或者是困難的,你能否提出一個比較習慣的更好的設計?
謝謝!
非常感謝您的選擇!儘管其他答案與問題標題更直接相關,但您的解決方案同樣重要。 –
我的印象是MPTC + FD在複雜依賴的邊緣情況下比TF更具表現力...... –