[project @ 1999-01-27 14:51:14 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, pRELUDE, mONAD, rATIO, iX, mAIN, pREL_MAIN, pREL_ERR,
18         pREL_BASE, pREL_NUM, pREL_LIST, pREL_TUP, pREL_ADDR, pREL_READ,
19         pREL_PACK, pREL_CONC, pREL_IO_BASE, pREL_ST, pREL_ARR, pREL_FOREIGN,
20         pREL_STABLE,
21
22         iNT, wORD
23         ) where
24
25 #include "HsVersions.h"
26
27 import OccName  ( Module, mkSrcModule )
28 import Util     ( nOfThem )
29 import Panic    ( panic )
30 \end{code}
31
32 \begin{code}
33 pREL_GHC, pRELUDE, mONAD, rATIO, iX, mAIN, pREL_MAIN, pREL_ERR      :: Module
34 pREL_BASE, pREL_NUM, pREL_LIST, pREL_TUP, pREL_ADDR, pREL_READ      :: Module   
35 pREL_PACK, pREL_CONC, pREL_IO_BASE, pREL_ST, pREL_ARR               :: Module   
36 pREL_FOREIGN, pREL_STABLE                                           :: Module
37
38 pRELUDE      = mkSrcModule "Prelude"
39 pREL_GHC     = mkSrcModule "PrelGHC"       -- Primitive types and values
40 pREL_BASE    = mkSrcModule "PrelBase"
41 pREL_READ    = mkSrcModule "PrelRead"
42 pREL_NUM     = mkSrcModule "PrelNum"
43 pREL_LIST    = mkSrcModule "PrelList"
44 pREL_TUP     = mkSrcModule "PrelTup"
45 pREL_PACK    = mkSrcModule "PrelPack"
46 pREL_CONC    = mkSrcModule "PrelConc"
47 pREL_IO_BASE = mkSrcModule "PrelIOBase"
48 pREL_ST      = mkSrcModule "PrelST"
49 pREL_ARR     = mkSrcModule "PrelArr"
50 pREL_FOREIGN = mkSrcModule "PrelForeign"
51 pREL_STABLE  = mkSrcModule "PrelStable"
52 pREL_ADDR    = mkSrcModule "PrelAddr"
53 pREL_ERR     = mkSrcModule "PrelErr"
54
55 mONAD        = mkSrcModule "Monad"
56 rATIO        = mkSrcModule "Ratio"
57 iX           = mkSrcModule "Ix"
58
59 pREL_MAIN    = mkSrcModule "PrelMain"
60 mAIN         = mkSrcModule "Main"
61
62 iNT, wORD   :: Module
63
64 iNT          = mkSrcModule "Int"
65 wORD         = mkSrcModule "Word"
66
67 \end{code}
68
69 %************************************************************************
70 %*                                                                      *
71 \subsection{Constructing the names of tuples
72 %*                                                                      *
73 %************************************************************************
74
75 \begin{code}
76 mkTupNameStr, mkUbxTupNameStr :: Int -> (Module, FAST_STRING)
77
78 mkTupNameStr 0 = (pREL_BASE, SLIT("()"))
79 mkTupNameStr 1 = panic "Name.mkTupNameStr: 1 ???"
80 mkTupNameStr 2 = (pREL_TUP, _PK_ "(,)")   -- not strictly necessary
81 mkTupNameStr 3 = (pREL_TUP, _PK_ "(,,)")  -- ditto
82 mkTupNameStr 4 = (pREL_TUP, _PK_ "(,,,)") -- ditto
83 mkTupNameStr n = (pREL_TUP, _PK_ ("(" ++ nOfThem (n-1) ',' ++ ")"))
84
85 mkUbxTupNameStr 0 = panic "Name.mkUbxTupNameStr: 0 ???"
86 mkUbxTupNameStr 1 = (pREL_GHC, _PK_ "(# #)") -- 1 and 0 both make sense!!!
87 mkUbxTupNameStr 2 = (pREL_GHC, _PK_ "(#,#)")
88 mkUbxTupNameStr 3 = (pREL_GHC, _PK_ "(#,,#)")
89 mkUbxTupNameStr 4 = (pREL_GHC, _PK_ "(#,,,#)")
90 mkUbxTupNameStr n = (pREL_GHC, _PK_ ("(#" ++ nOfThem (n-1) ',' ++ "#)"))
91 \end{code}
92
93