spędziłem starając się zrozumieć kod generowany przez szablon Haskell w tym przykładzie zaczerpnięte z książki Yesod:Zrozumienie kod generowany przez Yesod Trwałych TH
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
Person
name String
age Int
deriving Show
Car
color String
make String
model String
deriving Show
|]
czuję się jak najczęściej zobaczyć, co się dzieje (dużo typu zestawiania), ale jedna sekcja wciąż mnie dezorientuje:
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
instancja danych instance EntityField (PersonGeneric backend) typ
ma trzy konstruktorów danych, co ma sens (po jednym dla każdej kolumny w bazie danych), ale nawet po patrząc na to, co tylda ma w haskell, nie mogę tego podkreślić tand, co on tam robi. Dlaczego =>
, zwykle używane do uniwersalnej kwantyfikacji, jest używane po czymś, co wydaje się nie mieć żadnego charakteru?
Proszę dać mi znać, jeśli mogę być w jakiś sposób bardziej przejrzysty.