在haskell中使用类型族中的多态类型

Mos*_*sid 7 haskell

我正在学习类型家庭,但它太混乱了.当我在类定义之外定义多态类型时,它运行良好.

{-# LANGUAGE Rank2Types #-}
type T = Num a => a
Run Code Online (Sandbox Code Playgroud)

但是当在类定义中定义多态类型时,

{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE Rank2Types #-}

data D = D

class A a where
    type T a :: *
instance A D where
    type T D = Num a => a 
Run Code Online (Sandbox Code Playgroud)

然后编译器显示错误:

Illegal polymorphic or qualified type: forall a. Num a => a
In the type instance declaration for 'T'
In the instance declaration for 'A D'
Run Code Online (Sandbox Code Playgroud)

有没有办法在类中返回类型为多态的函数,如3(Num a => a)?