ho trascorso un po 'cercando di capire il codice generato dal modello di Haskell in questo esempio tratto dal libro Yesod:codice intesa generato da Yesod TH persistente
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
Person
name String
age Int
deriving Show
Car
color String
make String
model String
deriving Show
|]
Mi sento come se per lo più a vedere cosa sta succedendo (un sacco di tipo di smistamento), ma una sezione mi confonde ancora:
instance PersistEntity (PersonGeneric backend) where
data instance Unique (PersonGeneric backend) =
data instance EntityField (PersonGeneric backend) typ
= typ ~ KeyBackend backend (PersonGeneric backend) => PersonId |
typ ~ String => PersonName |
typ ~ Int => PersonAge
type instance PersistEntityBackend (PersonGeneric backend) =
backend
l'istanza di dati instance EntityField (PersonGeneric backend) typ
ha tre costruttori di dati, che ha senso (uno per ogni colonna nel database), ma anche dopo aver guardato a ciò la tilde lo fa in haskell, non posso sottotitoli tand cosa sta facendo lì. Perché lo =>
, normalmente utilizzato per la quantificazione universale, viene utilizzato dopo qualcosa che non sembra restringere alcun tipo?
Per favore fatemi sapere se posso essere più chiaro in qualche modo.