次のようなコードにおいて F 0 の定義をしたいのですが、下に示すエラーによってコンパイルできません。

型別名は必ず全部の引数について適用されてないといけませんか?

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeFamilies #-}

import Data.Kind (Type)
import GHC.TypeLits (Nat)

type family F (n :: Nat) :: Type -> Type

type instance F 0 = T0
type T0 a = ()

main :: IO ()
main = pure ()
    • The type synonym ‘T0’ should have 1 argument, but has been given none
    • In the type instance declaration for ‘F’
  |
9 | type instance F 0 = T0
  |