Haddock fix in the vectoriser
[ghc-hetmet.git] / compiler / prelude / PrelInfo.lhs
index 31457b2..867e79d 100644 (file)
@@ -5,30 +5,30 @@
 
 \begin{code}
 module PrelInfo (
-       module MkId,
+        wiredInIds, ghcPrimIds,
+        primOpRules, builtinRules,
 
-       ghcPrimExports,
-       wiredInThings, basicKnownKeyNames,
-       primOpId,
-       
-       -- Random other things
-       maybeCharLikeCon, maybeIntLikeCon,
+        ghcPrimExports,
+        wiredInThings, basicKnownKeyNames,
+        primOpId,
+        
+        -- Random other things
+        maybeCharLikeCon, maybeIntLikeCon,
 
-       -- Class categories
-       isNumericClass, isStandardClass
+        -- Class categories
+        isNumericClass, isStandardClass
 
     ) where
 
 #include "HsVersions.h"
 
-import PrelNames       ( basicKnownKeyNames, 
-                         hasKey, charDataConKey, intDataConKey,
-                         numericClassKeys, standardClassKeys )
-
+import PrelNames        ( basicKnownKeyNames,
+                          hasKey, charDataConKey, intDataConKey,
+                          numericClassKeys, standardClassKeys )
+import PrelRules
 import PrimOp          ( PrimOp, allThePrimOps, primOpOcc, primOpTag, maxPrimOpTag )
 import DataCon         ( DataCon )
 import Id              ( Id, idName )
-import MkId            ( mkPrimOpId, wiredInIds )
 import MkId            -- All of it, for re-export
 import Name            ( nameOccName )
 import TysPrim         ( primTyCons )
@@ -39,7 +39,7 @@ import Type           ( funTyCon )
 import TyCon           ( tyConName )
 import Util            ( isIn )
 
-import Array           ( Array, array, (!) )
+import Data.Array
 \end{code}
 
 %************************************************************************
@@ -48,11 +48,30 @@ import Array                ( Array, array, (!) )
 %*                                                                     *
 %************************************************************************
 
-We have two ``builtin name funs,'' one to look up @TyCons@ and
-@Classes@, the other to look up values.
+Notes about wired in things
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+* Wired-in things are Ids\/TyCons that are completely known to the compiler.
+  They are global values in GHC, (e.g.  listTyCon :: TyCon).
+
+* A wired in Name contains the thing itself inside the Name: 
+       see Name.wiredInNameTyThing_maybe
+  (E.g. listTyConName contains listTyCon. 
+
+* The name cache is initialised with (the names of) all wired-in things
+
+* The type checker sees if the Name is wired in before looking up 
+  the name in the type environment.  So the type envt itself contains
+  no wired in things.
+
+* MkIface prunes out wired-in things before putting them in an interface file.
+  So interface files never contain wired-in things.
+
 
 \begin{code}
 wiredInThings :: [TyThing]
+-- This list is used only to initialise HscMain.knownKeyNames
+-- to ensure that when you say "Prelude.map" in your source code, you
+-- get a Name with the correct known key
 wiredInThings          
   = concat
     [          -- Wired in TyCons and their implicit Ids
@@ -135,5 +154,7 @@ isNumericClass, isStandardClass :: Class -> Bool
 
 isNumericClass     clas = classKey clas `is_elem` numericClassKeys
 isStandardClass    clas = classKey clas `is_elem` standardClassKeys
+
+is_elem :: Eq a => a -> [a] -> Bool
 is_elem = isIn "is_X_Class"
 \end{code}