mkDataTOcc, mkDataCOcc, mkDataConWorkerOcc,
mkSuperDictSelOcc, mkLocalOcc, mkMethodOcc, mkInstTyTcOcc,
mkInstTyCoOcc, mkEqPredCoOcc,
+ mkCloOcc, mkCloTyConOcc, mkCloDataConOcc, mkCloIsoOcc,
-- ** Deconstruction
occNameFS, occNameString, occNameSpace,
-- Unicode TODO: put isSymbol in libcompat
#if __GLASGOW_HASKELL__ > 604
-import Data.Char ( isSymbol )
#else
isSymbol = const False
#endif
%************************************************************************
\begin{code}
-data NameSpace = VarName -- Variables, including "source" data constructors
- | DataName -- "Real" data constructors
+data NameSpace = VarName -- Variables, including "real" data constructors
+ | DataName -- "Source" data constructors
| TvName -- Type variables
| TcClsName -- Type constructors and classes; Haskell has them
-- in the same name space for now.
mkDataTOcc = mk_simple_deriv varName "$t"
mkDataCOcc = mk_simple_deriv varName "$c"
+-- Closure conversion
+mkCloOcc = mk_simple_deriv varName "$CC_"
+mkCloTyConOcc = mk_simple_deriv tcName ":CC_"
+mkCloDataConOcc = mk_simple_deriv dataName ":CD_"
+mkCloIsoOcc = mk_simple_deriv varName "$CCiso_"
+
mk_simple_deriv sp px occ = mk_deriv sp px (occNameString occ)
-- Data constructor workers are made by setting the name space