代数データ型のレコード名に困る。

data Common = Cmn Int String

data Type1 = T1 {num :: Int, cmn :: Common}
data Type2 = T2 {name :: String, cmn :: Common}

これだと当然 cmn 関数が2つ定義されてるからコンパイルエラーになる。

これの回避策として、cmn 関数をメンバに持つ型クラスを作る方法があるが、
オブジェクト指向のクラスのように型クラスを使うのは何か違う気がする。

かと言って、あとは両者の cmn で名前を変える方法しか思いつかない。
そりゃ終域が同じでも定義域が違うのだから別の関数になる理屈は分かるが、
関数の意味は同じなんだけどなぁ・・・

どうしたものか。
何かいい案はない?