3

私は学んでいるので、これは些細な質問かもしれません。

yesod scaffolding ツールによって生成されたコードで、次の表現を見つけました。

type YesodPersistBackend PersistTest = SqlPersist

私の理解では、YesodPersistBackend1 つの型引数を持つパラメーター化された型が作成PersistTestされ、これは type と同等SqlPersistです。

これは正しいです?もしそうなら、なぜパラメータを持たない型のパラメータを持つ型シノニムを作成するのでしょうか?

4

1 に答える 1

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-in​​stance

于 2011-08-30T13:22:17.990 に答える