+\begin{code}
+
+-- Derive a name for the representation type constructor of a data/newtype
+-- instance.
+--
+mkInstTyTcOcc :: Int -- Index
+ -> OccName -- Local name (e.g. "Map")
+ -> OccName -- Nice unique version (":R23Map")
+mkInstTyTcOcc index occ
+ = mk_deriv varName (":R" ++ show index) (occNameString occ)
+
+-- Derive a name for the coercion of a data/newtype instance.
+--
+mkInstTyCoOcc :: Int -- Index
+ -> OccName -- Local name (e.g. "Map")
+ -> OccName -- Nice unique version (":Co23Map")
+mkInstTyCoOcc index occ
+ = mk_deriv varName (":Co" ++ show index) (occNameString occ)
+\end{code}