複数の値構築子を持つ型があるとします。

data T = D1 | D2 | ・・・

ここで、この型の定義時に deriving Show とすると Show 型クラスのインスタンタンスとなり、
show 関数の定義が自動的になされます。

しかし、一部の値構築子に対する show 関数のみ独自の定義を行いたいです。
(他の値構築子に対する show 関数の定義は deriving で行われるもので良い)

このような場合、deriving Show の宣言を止めて明示的に Show 型クラスのインスタンスを宣言し、
全ての値構築子に対する show 関数の定義を自身で行わなければならないのでしょうか。