9769d60c3242f6002c6ff8ebc3f128966f7ee027
[ghc-hetmet.git] / ghc / compiler / prelude / PrelMods.lhs
1 %
2 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
3 %
4 \section[PrelMods]{Definitions of prelude modules}
5
6 The strings identify built-in prelude modules.  They are
7 defined here so as to avod 
8
9 [oh dear, looks like the recursive module monster caught up with
10  and gobbled whoever was writing the above :-) -- SOF ]
11
12 \begin{code}
13 module PrelMods
14         (
15         mkTupNameStr, mkUbxTupNameStr,
16
17         pREL_GHC, pREL_BASE, pREL_ADDR, pREL_STABLE,
18         pREL_IO_BASE, pREL_PACK, pREL_ERR,
19
20         pREL_GHC_Name, pRELUDE_Name, mONAD_Name, rATIO_Name, 
21         iX_Name, mAIN_Name, pREL_MAIN_Name, pREL_ERR_Name,
22         pREL_BASE_Name, pREL_NUM_Name, pREL_LIST_Name, 
23         pREL_TUP_Name, pREL_ADDR_Name, pREL_READ_Name,
24         pREL_PACK_Name, pREL_CONC_Name, pREL_IO_BASE_Name, 
25         pREL_ST_Name, pREL_ARR_Name, pREL_FOREIGN_Name,
26         pREL_STABLE_Name, pREL_SHOW_Name, pREL_ENUM_Name, iNT_Name, wORD_Name
27         ) where
28
29 #include "HsVersions.h"
30
31 import Module   ( Module, ModuleName, mkPrelModule, mkSrcModule )
32 import Util     ( nOfThem )
33 import Panic    ( panic )
34 \end{code}
35
36 \begin{code}
37 pRELUDE_Name      = mkSrcModule  "Prelude"
38 pREL_GHC_Name     = mkSrcModule "PrelGHC"          -- Primitive types and values
39 pREL_BASE_Name    = mkSrcModule "PrelBase"
40 pREL_ENUM_Name    = mkSrcModule "PrelEnum"
41 pREL_SHOW_Name    = mkSrcModule "PrelShow"
42 pREL_READ_Name    = mkSrcModule "PrelRead"
43 pREL_NUM_Name     = mkSrcModule "PrelNum"
44 pREL_LIST_Name    = mkSrcModule "PrelList"
45 pREL_TUP_Name     = mkSrcModule "PrelTup"
46 pREL_PACK_Name    = mkSrcModule "PrelPack"
47 pREL_CONC_Name    = mkSrcModule "PrelConc"
48 pREL_IO_BASE_Name = mkSrcModule "PrelIOBase"
49 pREL_ST_Name      = mkSrcModule "PrelST"
50 pREL_ARR_Name     = mkSrcModule "PrelArr"
51 pREL_FOREIGN_Name = mkSrcModule "PrelForeign"
52 pREL_STABLE_Name  = mkSrcModule "PrelStable"
53 pREL_ADDR_Name    = mkSrcModule "PrelAddr"
54 pREL_ERR_Name     = mkSrcModule "PrelErr"
55
56 mONAD_Name       = mkSrcModule "Monad"
57 rATIO_Name       = mkSrcModule "Ratio"
58 iX_Name          = mkSrcModule "Ix"
59 pREL_MAIN_Name   = mkSrcModule "PrelMain"
60 mAIN_Name        = mkSrcModule "Main"
61 iNT_Name         = mkSrcModule "Int"
62 wORD_Name        = mkSrcModule "Word"
63
64 pREL_GHC     = mkPrelModule pREL_GHC_Name
65 pREL_BASE    = mkPrelModule pREL_BASE_Name
66 pREL_ADDR    = mkPrelModule pREL_ADDR_Name
67 pREL_STABLE  = mkPrelModule pREL_STABLE_Name
68 pREL_IO_BASE = mkPrelModule pREL_IO_BASE_Name
69 pREL_PACK    = mkPrelModule pREL_PACK_Name
70 pREL_ERR     = mkPrelModule pREL_ERR_Name
71 \end{code}
72
73 %************************************************************************
74 %*                                                                      *
75 \subsection{Constructing the names of tuples
76 %*                                                                      *
77 %************************************************************************
78
79 \begin{code}
80 mkTupNameStr, mkUbxTupNameStr :: Int -> (ModuleName, FAST_STRING)
81
82 mkTupNameStr 0 = (pREL_BASE_Name, SLIT("()"))
83 mkTupNameStr 1 = panic "Name.mkTupNameStr: 1 ???"
84 mkTupNameStr 2 = (pREL_TUP_Name, _PK_ "(,)")   -- not strictly necessary
85 mkTupNameStr 3 = (pREL_TUP_Name, _PK_ "(,,)")  -- ditto
86 mkTupNameStr 4 = (pREL_TUP_Name, _PK_ "(,,,)") -- ditto
87 mkTupNameStr n = (pREL_TUP_Name, _PK_ ("(" ++ nOfThem (n-1) ',' ++ ")"))
88
89 mkUbxTupNameStr 0 = panic "Name.mkUbxTupNameStr: 0 ???"
90 mkUbxTupNameStr 1 = (pREL_GHC_Name, _PK_ "(# #)") -- 1 and 0 both make sense!!!
91 mkUbxTupNameStr 2 = (pREL_GHC_Name, _PK_ "(#,#)")
92 mkUbxTupNameStr 3 = (pREL_GHC_Name, _PK_ "(#,,#)")
93 mkUbxTupNameStr 4 = (pREL_GHC_Name, _PK_ "(#,,,#)")
94 mkUbxTupNameStr n = (pREL_GHC_Name, _PK_ ("(#" ++ nOfThem (n-1) ',' ++ "#)"))
95 \end{code}
96
97