TypeFamilies
型族 (indexed type families) を有効化する.型クラス (type class) が,データ型に対する関数のアドホック多相を提供するのに対し,型族は,データ型に型のアドホック多相を提供する.主に associated type synonym という機能を使うが,これは class 及び instance 構文以下に,関連付けられる型シノニムを type <Type> という形で記述できるようにするものである.
code:haskell
class YesodAuth a where
type AuthId a
...
instance YesodAuth App where
type AuthId App = UserId
HERP のアプリケーションにおいては,認証用に用いる識別子の型はたまたま UserId だが,他のアプリケーションでは MemberId かもしれないし,はたまたまったく異なるデータ型かもしれない.TypeFamilies 拡張を用いることによって,ユーザ側で起きうるこのような差異を吸収している.