È possibile avere un tipo come parte di un typeclass? Qualcosa di simile:Haskell: Le classificazioni tipiche possono definire tipi (tratti del tipo 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
E queste funzioni di "tipo livello" possono essere utilizzate altrove? Per esempio:
-- automatically deduce the type for the key, from the value type, using
-- the typeclass
data MyMap v = { getMap :: (KeyTraits v) => Map (keyType) v }
io possa fare qualcosa di completamente sbagliato, ma io fondamentalmente voglio la possibilità di definire le relazioni di tipo come quello di cui sopra (per esempio Alcuni valori già possono avere dati che possono essere utilizzati come una chiave). Se ciò non è possibile, o è difficile, potresti suggerire un design migliore che sia più idiomatico?
Grazie!
Grazie mille per l'alternativa! Anche se l'altra risposta è più direttamente legata al titolo della domanda, la tua soluzione è altrettanto rilevante. –
Ho avuto l'impressione che MPTC + FD fosse più espressivo della TF in alcuni casi estremi con dipendenze complicate ... –