[project @ 1999-12-20 10:34:27 by simonpj]
[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, pREL_NUM, pREL_FLOAT, pREL_REAL,
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_BYTEARR_Name, pREL_FOREIGN_Name,
26         pREL_STABLE_Name, pREL_SHOW_Name, pREL_ENUM_Name, iNT_Name, wORD_Name,
27         pREL_REAL_Name, pREL_FLOAT_Name
28         ) where
29
30 #include "HsVersions.h"
31
32 import Module   ( Module, ModuleName, mkPrelModule, mkSrcModule )
33 import Util     ( nOfThem )
34 import Panic    ( panic )
35 \end{code}
36
37 \begin{code}
38 pRELUDE_Name      = mkSrcModule "Prelude"
39 pREL_GHC_Name     = mkSrcModule "PrelGHC"          -- Primitive types and values
40 pREL_BASE_Name    = mkSrcModule "PrelBase"
41 pREL_ENUM_Name    = mkSrcModule "PrelEnum"
42 pREL_SHOW_Name    = mkSrcModule "PrelShow"
43 pREL_READ_Name    = mkSrcModule "PrelRead"
44 pREL_NUM_Name     = mkSrcModule "PrelNum"
45 pREL_LIST_Name    = mkSrcModule "PrelList"
46 pREL_TUP_Name     = mkSrcModule "PrelTup"
47 pREL_PACK_Name    = mkSrcModule "PrelPack"
48 pREL_CONC_Name    = mkSrcModule "PrelConc"
49 pREL_IO_BASE_Name = mkSrcModule "PrelIOBase"
50 pREL_ST_Name      = mkSrcModule "PrelST"
51 pREL_ARR_Name     = mkSrcModule "PrelArr"
52 pREL_BYTEARR_Name = mkSrcModule "PrelByteArr"
53 pREL_FOREIGN_Name = mkSrcModule "PrelForeign"
54 pREL_STABLE_Name  = mkSrcModule "PrelStable"
55 pREL_ADDR_Name    = mkSrcModule "PrelAddr"
56 pREL_ERR_Name     = mkSrcModule "PrelErr"
57 pREL_REAL_Name    = mkSrcModule "PrelReal"
58 pREL_FLOAT_Name   = mkSrcModule "PrelFloat"
59
60 mONAD_Name       = mkSrcModule "Monad"
61 rATIO_Name       = mkSrcModule "Ratio"
62 iX_Name          = mkSrcModule "Ix"
63 pREL_MAIN_Name   = mkSrcModule "PrelMain"
64 mAIN_Name        = mkSrcModule "Main"
65 iNT_Name         = mkSrcModule "Int"
66 wORD_Name        = mkSrcModule "Word"
67
68 pREL_GHC     = mkPrelModule pREL_GHC_Name
69 pREL_BASE    = mkPrelModule pREL_BASE_Name
70 pREL_ADDR    = mkPrelModule pREL_ADDR_Name
71 pREL_STABLE  = mkPrelModule pREL_STABLE_Name
72 pREL_IO_BASE = mkPrelModule pREL_IO_BASE_Name
73 pREL_PACK    = mkPrelModule pREL_PACK_Name
74 pREL_ERR     = mkPrelModule pREL_ERR_Name
75 pREL_NUM     = mkPrelModule pREL_NUM_Name
76 pREL_REAL    = mkPrelModule pREL_REAL_Name
77 pREL_FLOAT   = mkPrelModule pREL_FLOAT_Name
78 \end{code}
79
80 %************************************************************************
81 %*                                                                      *
82 \subsection{Constructing the names of tuples
83 %*                                                                      *
84 %************************************************************************
85
86 \begin{code}
87 mkTupNameStr, mkUbxTupNameStr :: Int -> (ModuleName, FAST_STRING)
88
89 mkTupNameStr 0 = (pREL_BASE_Name, SLIT("()"))
90 mkTupNameStr 1 = panic "Name.mkTupNameStr: 1 ???"
91 mkTupNameStr 2 = (pREL_TUP_Name, _PK_ "(,)")   -- not strictly necessary
92 mkTupNameStr 3 = (pREL_TUP_Name, _PK_ "(,,)")  -- ditto
93 mkTupNameStr 4 = (pREL_TUP_Name, _PK_ "(,,,)") -- ditto
94 mkTupNameStr n = (pREL_TUP_Name, _PK_ ("(" ++ nOfThem (n-1) ',' ++ ")"))
95
96 mkUbxTupNameStr 0 = panic "Name.mkUbxTupNameStr: 0 ???"
97 mkUbxTupNameStr 1 = (pREL_GHC_Name, _PK_ "(# #)") -- 1 and 0 both make sense!!!
98 mkUbxTupNameStr 2 = (pREL_GHC_Name, _PK_ "(#,#)")
99 mkUbxTupNameStr 3 = (pREL_GHC_Name, _PK_ "(#,,#)")
100 mkUbxTupNameStr 4 = (pREL_GHC_Name, _PK_ "(#,,,#)")
101 mkUbxTupNameStr n = (pREL_GHC_Name, _PK_ ("(#" ++ nOfThem (n-1) ',' ++ "#)"))
102 \end{code}
103
104