2 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
4 \section[PrelMods]{Definitions of prelude modules}
6 The strings identify built-in prelude modules. They are
7 defined here so as to avod
9 [oh dear, looks like the recursive module monster caught up with
10 and gobbled whoever was writing the above :-) -- SOF ]
15 mkTupNameStr, mkUbxTupNameStr,
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,
25 #include "HsVersions.h"
27 import Module ( Module, mkPrelModule, mkSrcModule )
28 import Util ( nOfThem )
29 import Panic ( panic )
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
38 pRELUDE = mkPrelModule "Prelude"
39 pREL_GHC = mkPrelModule "PrelGHC" -- Primitive types and values
40 pREL_BASE = mkPrelModule "PrelBase"
41 pREL_READ = mkPrelModule "PrelRead"
42 pREL_NUM = mkPrelModule "PrelNum"
43 pREL_LIST = mkPrelModule "PrelList"
44 pREL_TUP = mkPrelModule "PrelTup"
45 pREL_PACK = mkPrelModule "PrelPack"
46 pREL_CONC = mkPrelModule "PrelConc"
47 pREL_IO_BASE = mkPrelModule "PrelIOBase"
48 pREL_ST = mkPrelModule "PrelST"
49 pREL_ARR = mkPrelModule "PrelArr"
50 pREL_FOREIGN = mkPrelModule "PrelForeign"
51 pREL_STABLE = mkPrelModule "PrelStable"
52 pREL_ADDR = mkPrelModule "PrelAddr"
53 pREL_ERR = mkPrelModule "PrelErr"
55 mONAD = mkPrelModule "Monad"
56 rATIO = mkPrelModule "Ratio"
57 iX = mkPrelModule "Ix"
59 pREL_MAIN = mkPrelModule "PrelMain"
60 mAIN = mkSrcModule "Main"
64 iNT = mkPrelModule "Int"
65 wORD = mkPrelModule "Word"
69 %************************************************************************
71 \subsection{Constructing the names of tuples
73 %************************************************************************
76 mkTupNameStr, mkUbxTupNameStr :: Int -> (Module, FAST_STRING)
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) ',' ++ ")"))
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) ',' ++ "#)"))