请解释类型同义词

时间:2011-08-30 13:09:01

标签: haskell yesod type-families

我正在学习,这可能是一个微不足道的问题。

在yesod脚手架工具生成的代码中,我找到了这个表达式:

type YesodPersistBackend PersistTest = SqlPersist

我的理解是它创建了一个参数化类型YesodPersistBackend,它有一个类型参数PersistTest,这相当于类型SqlPersist

这是对的吗?如果是这样,为什么会为没有参数的类型创建一个带有参数的类型同义词?

1 个答案:

答案 0 :(得分:11)

这不是一个香草型声明。如果你看到完整的代码,它看起来像这样 -

instance YesodPersist PersistTest where
  type YesodPersistBackend PersistTest = SqlPersist

这是使用名为TypeFamilies的Haskell98扩展。请在此处阅读此特定语法 - http://www.haskell.org/ghc/docs/latest/html/users_guide/type-families.html#assoc-type-instance