X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fprelude%2FPrelMods.lhs;h=294cb5d10a4333afc40748fa9d8077163dddd931;hb=7f309f1c021e7583f724cce599ce2dd3c439361b;hp=8d9a5ad6e6e94678eb38aaa37f3be8ce2cfeab01;hpb=7a3bd641457666e10d0a47be9f22762e03defbf0;p=ghc-hetmet.git diff --git a/ghc/compiler/prelude/PrelMods.lhs b/ghc/compiler/prelude/PrelMods.lhs index 8d9a5ad..294cb5d 100644 --- a/ghc/compiler/prelude/PrelMods.lhs +++ b/ghc/compiler/prelude/PrelMods.lhs @@ -1,39 +1,93 @@ % -% (c) The GRASP/AQUA Project, Glasgow University, 1992-1996 +% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998 % \section[PrelMods]{Definitions of prelude modules} The strings identify built-in prelude modules. They are -defined here so as to avod +defined here so as to avod + +[oh dear, looks like the recursive module monster caught up with + and gobbled whoever was writing the above :-) -- SOF ] + \begin{code} +module PrelMods + ( + mkTupNameStr, mkUbxTupNameStr, + + pREL_GHC, pRELUDE, mONAD, rATIO, iX, mAIN, pREL_MAIN, pREL_ERR, + pREL_BASE, pREL_NUM, pREL_LIST, pREL_TUP, pREL_ADDR, pREL_READ, + pREL_PACK, pREL_CONC, pREL_IO_BASE, pREL_ST, pREL_ARR, pREL_FOREIGN, + pREL_STABLE, + + iNT, wORD + ) where + #include "HsVersions.h" -module PrelMods where +import OccName ( Module, mkSrcModule ) +import Util ( nOfThem ) +import Panic ( panic ) +\end{code} + +\begin{code} +pREL_GHC, pRELUDE, mONAD, rATIO, iX, mAIN, pREL_MAIN, pREL_ERR :: Module +pREL_BASE, pREL_NUM, pREL_LIST, pREL_TUP, pREL_ADDR, pREL_READ :: Module +pREL_PACK, pREL_CONC, pREL_IO_BASE, pREL_ST, pREL_ARR :: Module +pREL_FOREIGN, pREL_STABLE :: Module + +pRELUDE = mkSrcModule "Prelude" +pREL_GHC = mkSrcModule "PrelGHC" -- Primitive types and values +pREL_BASE = mkSrcModule "PrelBase" +pREL_READ = mkSrcModule "PrelRead" +pREL_NUM = mkSrcModule "PrelNum" +pREL_LIST = mkSrcModule "PrelList" +pREL_TUP = mkSrcModule "PrelTup" +pREL_PACK = mkSrcModule "PrelPack" +pREL_CONC = mkSrcModule "PrelConc" +pREL_IO_BASE = mkSrcModule "PrelIOBase" +pREL_ST = mkSrcModule "PrelST" +pREL_ARR = mkSrcModule "PrelArr" +pREL_FOREIGN = mkSrcModule "PrelForeign" +pREL_STABLE = mkSrcModule "PrelStable" +pREL_ADDR = mkSrcModule "PrelAddr" +pREL_ERR = mkSrcModule "PrelErr" + +mONAD = mkSrcModule "Monad" +rATIO = mkSrcModule "Ratio" +iX = mkSrcModule "Ix" + +pREL_MAIN = mkSrcModule "PrelMain" +mAIN = mkSrcModule "Main" + +iNT, wORD :: Module + +iNT = mkSrcModule "Int" +wORD = mkSrcModule "Word" -CHK_Ubiq() -- debugging consistency check \end{code} +%************************************************************************ +%* * +\subsection{Constructing the names of tuples +%* * +%************************************************************************ \begin{code} -gHC__ = SLIT("GHC") -- Primitive types and values - -pRELUDE = SLIT("Prelude") -pREL_BASE = SLIT("PrelBase") -pREL_READ = SLIT("PrelRead") -pREL_NUM = SLIT("PrelNum") -pREL_LIST = SLIT("PrelList") -pREL_TUP = SLIT("PrelTup") -pACKED_STRING= SLIT("PackedString") -cONC_BASE = SLIT("ConcBase") -iO_BASE = SLIT("IOBase") -mONAD = SLIT("Monad") -rATIO = SLIT("Ratio") -iX = SLIT("Ix") -sT_BASE = SLIT("STBase") -aRR_BASE = SLIT("ArrBase") -fOREIGN = SLIT("Foreign") - -mAIN = SLIT("Main") -gHC_MAIN = SLIT("GHCmain") -gHC_ERR = SLIT("GHCerr") +mkTupNameStr, mkUbxTupNameStr :: Int -> (Module, FAST_STRING) + +mkTupNameStr 0 = (pREL_BASE, SLIT("()")) +mkTupNameStr 1 = panic "Name.mkTupNameStr: 1 ???" +mkTupNameStr 2 = (pREL_TUP, _PK_ "(,)") -- not strictly necessary +mkTupNameStr 3 = (pREL_TUP, _PK_ "(,,)") -- ditto +mkTupNameStr 4 = (pREL_TUP, _PK_ "(,,,)") -- ditto +mkTupNameStr n = (pREL_TUP, _PK_ ("(" ++ nOfThem (n-1) ',' ++ ")")) + +mkUbxTupNameStr 0 = panic "Name.mkUbxTupNameStr: 0 ???" +mkUbxTupNameStr 1 = (pREL_GHC, _PK_ "(# #)") -- 1 and 0 both make sense!!! +mkUbxTupNameStr 2 = (pREL_GHC, _PK_ "(#,#)") +mkUbxTupNameStr 3 = (pREL_GHC, _PK_ "(#,,#)") +mkUbxTupNameStr 4 = (pREL_GHC, _PK_ "(#,,,#)") +mkUbxTupNameStr n = (pREL_GHC, _PK_ ("(#" ++ nOfThem (n-1) ',' ++ "#)")) \end{code} + +