型変数を伴うデータ型がインスタンスとなるような型クラスにおいて、
その型変数もシグネチャに取り入れた関数を定義したいです。

次のようなイメージの型クラスです。

class P (p a) where
  ext :: p a -> a

で、次のようなデータ型を用意し

data Test a = T (a, a)

次のようにインスタンスを宣言したい。

instance (Num a) => P (Test a) where
  ext (T (x, y)) = x + y

しかしこれでは型クラスの定義の class P (p a) where の所でエラーが出ます。
Type found where type variable expected

本来 class P のすぐ後には型変数が来るべきですが (p a) と書かれていて、
型変数が書かれていないといった旨のエラーだと思います。

このようーな型クラスは作れるのでしょうか。
作れるのなら、どのような方法で作れるでしょうか。