在此示例中,我花了一段时间试图理解模板 haskell 生成的代码,该示例取自 Yesod 书:
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
Person
name String
age Int
deriving Show
Car
color String
make String
model String
deriving Show
|]
我觉得我主要看到发生了什么(很多类型编组),但有一个部分仍然让我感到困惑:
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
数据实例instance EntityField (PersonGeneric backend) typ
具有三个数据构造函数,这很有意义(数据库中的每一列一个),但即使在查看波浪号在 haskell 中的作用之后,我也无法理解它在那里做什么。为什么=>
通常用于通用量化的 ,在似乎不限制任何类型的东西之后使用?
如果我能以某种方式更清楚,请告诉我。