Tôi đã trải qua một thời gian cố gắng tìm hiểu mã được tạo ra bởi mẫu Haskell trong ví dụ này lấy từ cuốn sách Yesod:Hiểu mã được tạo bởi Yesod TH dai dẳng
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
Person
name String
age Int
deriving Show
Car
color String
make String
model String
deriving Show
|]
Tôi cảm thấy như tôi chủ yếu là xem những gì đang xảy ra (rất nhiều loại marshalling), nhưng một phần vẫn còn bối rối cho tôi:
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
Thể hiện dữ liệu instance EntityField (PersonGeneric backend) typ
có ba nhà xây dựng dữ liệu, có ý nghĩa (một cho mỗi cột trong cơ sở dữ liệu), nhưng ngay cả sau khi nhìn lên những gì dấu ngã trong haskell, tôi không thể gạch dưới và những gì nó đang làm ở đó. Tại sao là =>
, thường được sử dụng để định lượng phổ quát, được sử dụng sau khi một cái gì đó mà không có vẻ để phục hồi bất kỳ loại?
Vui lòng cho tôi biết nếu tôi có thể rõ ràng hơn theo một cách nào đó.