-%
-% (c) The GRASP/AQUA Project, Glasgow University, 1992-1996
-%
-\section[Unique]{The @Unique@ data type}
+
@Uniques@ are used to distinguish entities in the compiler (@Ids@,
@Classes@, etc.) from each other. Thus, @Uniques@ are the basic
Haskell).
\begin{code}
-#include "HsVersions.h"
-
---<mkdependHS:friends> UniqSupply
-
module Unique (
- Unique,
+ Unique, Uniquable(..),
u2i, -- hack: used in UniqFM
pprUnique, pprUnique10, showUnique,
mkUniqueGrimily, -- Used in UniqSupply only!
incrUnique, -- Used for renumbering
- initRenumberingUniques,
+ initTyVarUnique, mkTyVarUnique,
+ initTidyUniques,
-- now all the built-in Uniques (and functions to make them)
-- [the Oh-So-Wonderful Haskell module system wins again...]
andandIdKey,
appendIdKey,
arrayPrimTyConKey,
+ assertIdKey,
augmentIdKey,
boolTyConKey,
boundedClassKey,
charDataConKey,
charPrimTyConKey,
charTyConKey,
+ coerceIdKey,
composeIdKey,
consDataConKey,
doubleDataConKey,
functorClassKey,
geClassOpKey,
gtDataConKey,
- iOTyConKey,
+ inlineIdKey,
intDataConKey,
intPrimTyConKey,
intTyConKey,
+ int8TyConKey,
+ int8DataConKey,
+ int16TyConKey,
+ int16DataConKey,
+ int32TyConKey,
+ int32DataConKey,
+ int64DataConKey,
+ int64PrimTyConKey,
+ int64TyConKey,
integerDataConKey,
integerMinusOneIdKey,
integerPlusOneIdKey,
liftTyConKey,
listTyConKey,
ltDataConKey,
- mainKey, mainPrimIoKey,
+ mainKey,
minusClassOpKey,
monadClassKey,
monadPlusClassKey,
mutableArrayPrimTyConKey,
mutableByteArrayPrimTyConKey,
nilDataConKey,
- noDefaultMethodErrorIdKey,
+ noMethodBindingErrorIdKey,
nonExhaustiveGuardsErrorIdKey,
- nonExplicitMethodErrorIdKey,
notIdKey,
numClassKey,
ordClassKey,
parErrorIdKey,
parIdKey,
patErrorIdKey,
- primIoTyConKey,
ratioDataConKey,
ratioTyConKey,
rationalTyConKey,
realWorldPrimIdKey,
realWorldTyConKey,
recConErrorIdKey,
+ recSelErrIdKey,
recUpdErrorIdKey,
return2GMPsDataConKey,
return2GMPsTyConKey,
returnIntAndGMPDataConKey,
returnIntAndGMPTyConKey,
returnMClassOpKey,
- runSTIdKey,
seqIdKey,
showClassKey,
showParenIdKey,
showStringIdKey,
stTyConKey,
stDataConKey,
+ ioTyConKey,
+ ioDataConKey,
+ ioResultTyConKey,
+ ioOkDataConKey,
+ ioFailDataConKey,
stablePtrDataConKey,
stablePtrPrimTyConKey,
stablePtrTyConKey,
stateAndForeignObjPrimTyConKey,
stateAndIntPrimDataConKey,
stateAndIntPrimTyConKey,
+ stateAndInt64PrimDataConKey,
+ stateAndInt64PrimTyConKey,
stateAndMutableArrayPrimDataConKey,
stateAndMutableArrayPrimTyConKey,
stateAndMutableByteArrayPrimDataConKey,
stateAndSynchVarPrimTyConKey,
stateAndWordPrimDataConKey,
stateAndWordPrimTyConKey,
+ stateAndWord64PrimDataConKey,
+ stateAndWord64PrimTyConKey,
stateDataConKey,
+ stRetDataConKey,
statePrimTyConKey,
stateTyConKey,
+ stRetTyConKey,
synchVarPrimTyConKey,
thenMClassOpKey,
toEnumClassOpKey,
unpackCStringFoldrIdKey,
unpackCStringIdKey,
ureadListIdKey,
+ unsafeCoerceIdKey,
ushowListIdKey,
voidIdKey,
voidTyConKey,
wordDataConKey,
wordPrimTyConKey,
wordTyConKey,
+ word8TyConKey,
+ word8DataConKey,
+ word16TyConKey,
+ word16DataConKey,
+ word32TyConKey,
+ word32DataConKey,
+ word64DataConKey,
+ word64PrimTyConKey,
+ word64TyConKey,
zeroClassOpKey
, copyableIdKey
, noFollowIdKey
, allClassKey
) where
-#if __GLASGOW_HASKELL__ <= 201
-import PreludeGlaST
-#else
+#include "HsVersions.h"
+
+import FastString ( uniqueOfFS )
import GlaExts
import ST
-#endif
-
-IMP_Ubiq(){-uitous-}
-
-#if __GLASGOW_HASKELL__ >= 202
-import {-# SOURCE #-} UniqFM ( Uniquable(..) )
-#endif
+import PrelBase ( Char(..), chr, ord )
import Outputable
-import Pretty
import Util
\end{code}
Fast comparison is everything on @Uniques@:
\begin{code}
-u2i :: Unique -> FAST_INT
-
data Unique = MkUnique Int#
+\end{code}
+
+\begin{code}
+u2i :: Unique -> FAST_INT
u2i (MkUnique i) = i
\end{code}
in
(tag, i)
where
- shiftr x y = shiftRA# x y
+ shiftr x y = shiftRL# x y
+\end{code}
+
+
+
+%************************************************************************
+%* *
+\subsection[Uniquable-class]{The @Uniquable@ class}
+%* *
+%************************************************************************
+
+\begin{code}
+class Uniquable a where
+ uniqueOf :: a -> Unique
+
+instance Uniquable FastString where
+ uniqueOf fs = mkUniqueGrimily (uniqueOfFS fs)
+
+instance Uniquable Int where
+ uniqueOf (I# i#) = mkUniqueGrimily i#
\end{code}
+
%************************************************************************
%* *
\subsection[Unique-instances]{Instance declarations for @Unique@}
leUnique (MkUnique u1) (MkUnique u2) = u1 <=# u2
cmpUnique (MkUnique u1) (MkUnique u2)
- = if u1 ==# u2 then EQ_ else if u1 <# u2 then LT_ else GT_
+ = if u1 ==# u2 then EQ else if u1 <# u2 then LT else GT
instance Eq Unique where
a == b = eqUnique a b
a <= b = leUnique a b
a > b = not (leUnique a b)
a >= b = not (ltUnique a b)
- _tagCmp a b = case cmpUnique a b of { LT_ -> _LT; EQ_ -> _EQ; GT__ -> _GT }
-
-instance Ord3 Unique where
- cmp = cmpUnique
+ compare a b = cmpUnique a b
-----------------
instance Uniquable Unique where
We do sometimes make strings with @Uniques@ in them:
\begin{code}
-pprUnique, pprUnique10 :: Unique -> Doc
+pprUnique, pprUnique10 :: Unique -> SDoc
pprUnique uniq
= case unpkUnique uniq of
= case unpkUnique uniq of
(tag, u) -> finish_ppr tag u (int u)
-finish_ppr tag u pp_u
- = if tag /= 't' -- this is just to make v common tyvars, t1, t2, ...
- -- come out as a, b, ... (shorter, easier to read)
- then pp_all
- else case u of
- 1 -> char 'a'
- 2 -> char 'b'
- 3 -> char 'c'
- 4 -> char 'd'
- 5 -> char 'e'
- _ -> pp_all
- where
- pp_all = (<>) (char tag) pp_u
+finish_ppr 't' u pp_u | u < 26
+ = -- Special case to make v common tyvars, t1, t2, ...
+ -- come out as a, b, ... (shorter, easier to read)
+ char (chr (ord 'a' + u))
+finish_ppr tag u pp_u = char tag <> pp_u
-showUnique :: Unique -> FAST_STRING
-showUnique uniq = _PK_ (show (pprUnique uniq))
+showUnique :: Unique -> String
+showUnique uniq = showSDoc (pprUnique uniq)
instance Outputable Unique where
- ppr sty u = pprUnique u
+ ppr u = pprUnique u
instance Text Unique where
- showsPrec p uniq rest = _UNPK_ (showUnique uniq)
+ showsPrec p uniq rest = showUnique uniq
\end{code}
%************************************************************************
The ``62-its'' are \tr{[0-9a-zA-Z]}. We don't handle negative Ints.
Code stolen from Lennart.
\begin{code}
-#if __GLASGOW_HASKELL__ == 201
-# define BYTE_ARRAY GHCbase.ByteArray
-# define RUN_ST GHCbase.runST
-# define AND_THEN >>=
-# define AND_THEN_ >>
-# define RETURN return
-#elif __GLASGOW_HASKELL__ >= 202
# define BYTE_ARRAY GlaExts.ByteArray
# define RUN_ST ST.runST
# define AND_THEN >>=
# define AND_THEN_ >>
# define RETURN return
-#else
-# define BYTE_ARRAY _ByteArray
-# define RUN_ST _runST
-# define AND_THEN `thenStrictlyST`
-# define AND_THEN_ `seqStrictlyST`
-# define RETURN returnStrictlyST
-#endif
-iToBase62 :: Int -> Doc
+iToBase62 :: Int -> SDoc
iToBase62 n@(I# n#)
= ASSERT(n >= 0)
mkPrimOpIdUnique op = mkUnique '7' op
mkPreludeMiscIdUnique i = mkUnique '8' i
-initRenumberingUniques = (mkUnique 'v' 1, mkUnique 't' 1, mkUnique 'u' 1)
+-- The "tyvar uniques" print specially nicely: a, b, c, etc.
+-- See pprUnique for details
+
+initTyVarUnique :: Unique
+initTyVarUnique = mkUnique 't' 0
+
+mkTyVarUnique :: Int -> Unique
+mkTyVarUnique n = mkUnique 't' n
+
+initTidyUniques :: (Unique, Unique) -- Global and local
+initTidyUniques = (mkUnique 'g' 0, mkUnique 'x' 0)
mkPseudoUnique1, mkPseudoUnique2, mkPseudoUnique3,
mkBuiltinUnique :: Int -> Unique
floatPrimTyConKey = mkPreludeTyConUnique 11
floatTyConKey = mkPreludeTyConUnique 12
funTyConKey = mkPreludeTyConUnique 13
-iOTyConKey = mkPreludeTyConUnique 14
-intPrimTyConKey = mkPreludeTyConUnique 15
-intTyConKey = mkPreludeTyConUnique 16
-integerTyConKey = mkPreludeTyConUnique 17
-liftTyConKey = mkPreludeTyConUnique 18
-listTyConKey = mkPreludeTyConUnique 19
-foreignObjPrimTyConKey = mkPreludeTyConUnique 20
-foreignObjTyConKey = mkPreludeTyConUnique 21
-mutableArrayPrimTyConKey = mkPreludeTyConUnique 22
-mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 23
-orderingTyConKey = mkPreludeTyConUnique 24
-synchVarPrimTyConKey = mkPreludeTyConUnique 25
-ratioTyConKey = mkPreludeTyConUnique 26
-rationalTyConKey = mkPreludeTyConUnique 27
-realWorldTyConKey = mkPreludeTyConUnique 28
-return2GMPsTyConKey = mkPreludeTyConUnique 29
-returnIntAndGMPTyConKey = mkPreludeTyConUnique 30
-stablePtrPrimTyConKey = mkPreludeTyConUnique 31
-stablePtrTyConKey = mkPreludeTyConUnique 32
-stateAndAddrPrimTyConKey = mkPreludeTyConUnique 33
-stateAndArrayPrimTyConKey = mkPreludeTyConUnique 34
-stateAndByteArrayPrimTyConKey = mkPreludeTyConUnique 35
-stateAndCharPrimTyConKey = mkPreludeTyConUnique 36
-stateAndDoublePrimTyConKey = mkPreludeTyConUnique 37
-stateAndFloatPrimTyConKey = mkPreludeTyConUnique 38
-stateAndIntPrimTyConKey = mkPreludeTyConUnique 39
-stateAndForeignObjPrimTyConKey = mkPreludeTyConUnique 40
-stateAndMutableArrayPrimTyConKey = mkPreludeTyConUnique 41
-stateAndMutableByteArrayPrimTyConKey = mkPreludeTyConUnique 42
-stateAndSynchVarPrimTyConKey = mkPreludeTyConUnique 43
-stateAndPtrPrimTyConKey = mkPreludeTyConUnique 44
-stateAndStablePtrPrimTyConKey = mkPreludeTyConUnique 45
-stateAndWordPrimTyConKey = mkPreludeTyConUnique 46
-statePrimTyConKey = mkPreludeTyConUnique 47
-stateTyConKey = mkPreludeTyConUnique 48
-mutableByteArrayTyConKey = mkPreludeTyConUnique 49
-stTyConKey = mkPreludeTyConUnique 50
-primIoTyConKey = mkPreludeTyConUnique 51
-byteArrayTyConKey = mkPreludeTyConUnique 52
-wordPrimTyConKey = mkPreludeTyConUnique 53
-wordTyConKey = mkPreludeTyConUnique 54
-voidTyConKey = mkPreludeTyConUnique 55
+intPrimTyConKey = mkPreludeTyConUnique 14
+intTyConKey = mkPreludeTyConUnique 15
+int8TyConKey = mkPreludeTyConUnique 16
+int16TyConKey = mkPreludeTyConUnique 17
+int32TyConKey = mkPreludeTyConUnique 18
+int64PrimTyConKey = mkPreludeTyConUnique 19
+int64TyConKey = mkPreludeTyConUnique 20
+integerTyConKey = mkPreludeTyConUnique 21
+liftTyConKey = mkPreludeTyConUnique 22
+listTyConKey = mkPreludeTyConUnique 23
+foreignObjPrimTyConKey = mkPreludeTyConUnique 24
+foreignObjTyConKey = mkPreludeTyConUnique 25
+mutableArrayPrimTyConKey = mkPreludeTyConUnique 26
+mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 27
+orderingTyConKey = mkPreludeTyConUnique 28
+synchVarPrimTyConKey = mkPreludeTyConUnique 29
+ratioTyConKey = mkPreludeTyConUnique 30
+rationalTyConKey = mkPreludeTyConUnique 31
+realWorldTyConKey = mkPreludeTyConUnique 32
+return2GMPsTyConKey = mkPreludeTyConUnique 33
+returnIntAndGMPTyConKey = mkPreludeTyConUnique 34
+stablePtrPrimTyConKey = mkPreludeTyConUnique 35
+stablePtrTyConKey = mkPreludeTyConUnique 36
+stateAndAddrPrimTyConKey = mkPreludeTyConUnique 37
+stateAndArrayPrimTyConKey = mkPreludeTyConUnique 38
+stateAndByteArrayPrimTyConKey = mkPreludeTyConUnique 39
+stateAndCharPrimTyConKey = mkPreludeTyConUnique 40
+stateAndDoublePrimTyConKey = mkPreludeTyConUnique 41
+stateAndFloatPrimTyConKey = mkPreludeTyConUnique 42
+stateAndIntPrimTyConKey = mkPreludeTyConUnique 43
+stateAndInt64PrimTyConKey = mkPreludeTyConUnique 44
+stateAndForeignObjPrimTyConKey = mkPreludeTyConUnique 45
+stateAndMutableArrayPrimTyConKey = mkPreludeTyConUnique 46
+stateAndMutableByteArrayPrimTyConKey = mkPreludeTyConUnique 47
+stateAndSynchVarPrimTyConKey = mkPreludeTyConUnique 48
+stateAndPtrPrimTyConKey = mkPreludeTyConUnique 49
+stateAndStablePtrPrimTyConKey = mkPreludeTyConUnique 50
+stateAndWordPrimTyConKey = mkPreludeTyConUnique 51
+stateAndWord64PrimTyConKey = mkPreludeTyConUnique 52
+statePrimTyConKey = mkPreludeTyConUnique 53
+stateTyConKey = mkPreludeTyConUnique 54
+mutableByteArrayTyConKey = mkPreludeTyConUnique 55
+stTyConKey = mkPreludeTyConUnique 56
+stRetTyConKey = mkPreludeTyConUnique 57
+ioTyConKey = mkPreludeTyConUnique 58
+ioResultTyConKey = mkPreludeTyConUnique 59
+byteArrayTyConKey = mkPreludeTyConUnique 60
+wordPrimTyConKey = mkPreludeTyConUnique 61
+wordTyConKey = mkPreludeTyConUnique 62
+word8TyConKey = mkPreludeTyConUnique 63
+word16TyConKey = mkPreludeTyConUnique 64
+word32TyConKey = mkPreludeTyConUnique 65
+word64PrimTyConKey = mkPreludeTyConUnique 66
+word64TyConKey = mkPreludeTyConUnique 67
+voidTyConKey = mkPreludeTyConUnique 68
\end{code}
%************************************************************************
floatDataConKey = mkPreludeDataConUnique 9
gtDataConKey = mkPreludeDataConUnique 10
intDataConKey = mkPreludeDataConUnique 11
-integerDataConKey = mkPreludeDataConUnique 12
-liftDataConKey = mkPreludeDataConUnique 13
-ltDataConKey = mkPreludeDataConUnique 14
-foreignObjDataConKey = mkPreludeDataConUnique 15
-nilDataConKey = mkPreludeDataConUnique 18
+int8DataConKey = mkPreludeDataConUnique 12
+int16DataConKey = mkPreludeDataConUnique 13
+int32DataConKey = mkPreludeDataConUnique 14
+int64DataConKey = mkPreludeDataConUnique 15
+integerDataConKey = mkPreludeDataConUnique 16
+liftDataConKey = mkPreludeDataConUnique 17
+ltDataConKey = mkPreludeDataConUnique 18
+foreignObjDataConKey = mkPreludeDataConUnique 19
+nilDataConKey = mkPreludeDataConUnique 20
ratioDataConKey = mkPreludeDataConUnique 21
return2GMPsDataConKey = mkPreludeDataConUnique 22
returnIntAndGMPDataConKey = mkPreludeDataConUnique 23
stateAndDoublePrimDataConKey = mkPreludeDataConUnique 29
stateAndFloatPrimDataConKey = mkPreludeDataConUnique 30
stateAndIntPrimDataConKey = mkPreludeDataConUnique 31
-stateAndForeignObjPrimDataConKey = mkPreludeDataConUnique 32
-stateAndMutableArrayPrimDataConKey = mkPreludeDataConUnique 33
-stateAndMutableByteArrayPrimDataConKey = mkPreludeDataConUnique 34
-stateAndSynchVarPrimDataConKey = mkPreludeDataConUnique 35
-stateAndPtrPrimDataConKey = mkPreludeDataConUnique 36
-stateAndStablePtrPrimDataConKey = mkPreludeDataConUnique 37
-stateAndWordPrimDataConKey = mkPreludeDataConUnique 38
-stateDataConKey = mkPreludeDataConUnique 39
-trueDataConKey = mkPreludeDataConUnique 40
-wordDataConKey = mkPreludeDataConUnique 41
-stDataConKey = mkPreludeDataConUnique 42
+stateAndInt64PrimDataConKey = mkPreludeDataConUnique 32
+stateAndForeignObjPrimDataConKey = mkPreludeDataConUnique 33
+stateAndMutableArrayPrimDataConKey = mkPreludeDataConUnique 34
+stateAndMutableByteArrayPrimDataConKey = mkPreludeDataConUnique 35
+stateAndSynchVarPrimDataConKey = mkPreludeDataConUnique 36
+stateAndPtrPrimDataConKey = mkPreludeDataConUnique 37
+stateAndStablePtrPrimDataConKey = mkPreludeDataConUnique 38
+stateAndWordPrimDataConKey = mkPreludeDataConUnique 39
+stateAndWord64PrimDataConKey = mkPreludeDataConUnique 40
+stateDataConKey = mkPreludeDataConUnique 41
+trueDataConKey = mkPreludeDataConUnique 42
+wordDataConKey = mkPreludeDataConUnique 43
+word8DataConKey = mkPreludeDataConUnique 44
+word16DataConKey = mkPreludeDataConUnique 45
+word32DataConKey = mkPreludeDataConUnique 46
+word64DataConKey = mkPreludeDataConUnique 47
+stDataConKey = mkPreludeDataConUnique 48
+stRetDataConKey = mkPreludeDataConUnique 49
+ioDataConKey = mkPreludeDataConUnique 50
+ioOkDataConKey = mkPreludeDataConUnique 51
+ioFailDataConKey = mkPreludeDataConUnique 52
\end{code}
%************************************************************************
foldlIdKey = mkPreludeMiscIdUnique 8
foldrIdKey = mkPreludeMiscIdUnique 9
forkIdKey = mkPreludeMiscIdUnique 10
-int2IntegerIdKey = mkPreludeMiscIdUnique 11
+recSelErrIdKey = mkPreludeMiscIdUnique 11
integerMinusOneIdKey = mkPreludeMiscIdUnique 12
integerPlusOneIdKey = mkPreludeMiscIdUnique 13
integerPlusTwoIdKey = mkPreludeMiscIdUnique 14
integerZeroIdKey = mkPreludeMiscIdUnique 15
irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
lexIdKey = mkPreludeMiscIdUnique 17
-noDefaultMethodErrorIdKey = mkPreludeMiscIdUnique 20
+noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 20
nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 21
-nonExplicitMethodErrorIdKey = mkPreludeMiscIdUnique 22
-notIdKey = mkPreludeMiscIdUnique 23
-packCStringIdKey = mkPreludeMiscIdUnique 24
-parErrorIdKey = mkPreludeMiscIdUnique 25
-parIdKey = mkPreludeMiscIdUnique 26
-patErrorIdKey = mkPreludeMiscIdUnique 27
-readParenIdKey = mkPreludeMiscIdUnique 28
-realWorldPrimIdKey = mkPreludeMiscIdUnique 29
-recConErrorIdKey = mkPreludeMiscIdUnique 30
-recUpdErrorIdKey = mkPreludeMiscIdUnique 31
-runSTIdKey = mkPreludeMiscIdUnique 32
-seqIdKey = mkPreludeMiscIdUnique 33
-showParenIdKey = mkPreludeMiscIdUnique 34
-showSpaceIdKey = mkPreludeMiscIdUnique 35
-showStringIdKey = mkPreludeMiscIdUnique 36
-traceIdKey = mkPreludeMiscIdUnique 37
-unpackCString2IdKey = mkPreludeMiscIdUnique 38
-unpackCStringAppendIdKey = mkPreludeMiscIdUnique 39
-unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 40
-unpackCStringIdKey = mkPreludeMiscIdUnique 41
-voidIdKey = mkPreludeMiscIdUnique 42
-ushowListIdKey = mkPreludeMiscIdUnique 43
-ureadListIdKey = mkPreludeMiscIdUnique 44
-
-copyableIdKey = mkPreludeMiscIdUnique 45
-noFollowIdKey = mkPreludeMiscIdUnique 46
-parAtAbsIdKey = mkPreludeMiscIdUnique 47
-parAtForNowIdKey = mkPreludeMiscIdUnique 48
-parAtIdKey = mkPreludeMiscIdUnique 49
-parAtRelIdKey = mkPreludeMiscIdUnique 50
-parGlobalIdKey = mkPreludeMiscIdUnique 51
-parLocalIdKey = mkPreludeMiscIdUnique 52
+notIdKey = mkPreludeMiscIdUnique 22
+packCStringIdKey = mkPreludeMiscIdUnique 23
+parErrorIdKey = mkPreludeMiscIdUnique 24
+parIdKey = mkPreludeMiscIdUnique 25
+patErrorIdKey = mkPreludeMiscIdUnique 26
+readParenIdKey = mkPreludeMiscIdUnique 27
+realWorldPrimIdKey = mkPreludeMiscIdUnique 28
+recConErrorIdKey = mkPreludeMiscIdUnique 29
+recUpdErrorIdKey = mkPreludeMiscIdUnique 30
+seqIdKey = mkPreludeMiscIdUnique 31
+showParenIdKey = mkPreludeMiscIdUnique 32
+showSpaceIdKey = mkPreludeMiscIdUnique 33
+showStringIdKey = mkPreludeMiscIdUnique 34
+traceIdKey = mkPreludeMiscIdUnique 35
+unpackCString2IdKey = mkPreludeMiscIdUnique 36
+unpackCStringAppendIdKey = mkPreludeMiscIdUnique 37
+unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 38
+unpackCStringIdKey = mkPreludeMiscIdUnique 39
+unsafeCoerceIdKey = mkPreludeMiscIdUnique 40
+voidIdKey = mkPreludeMiscIdUnique 41
+ushowListIdKey = mkPreludeMiscIdUnique 42
+ureadListIdKey = mkPreludeMiscIdUnique 43
+
+copyableIdKey = mkPreludeMiscIdUnique 44
+noFollowIdKey = mkPreludeMiscIdUnique 45
+parAtAbsIdKey = mkPreludeMiscIdUnique 46
+parAtForNowIdKey = mkPreludeMiscIdUnique 47
+parAtIdKey = mkPreludeMiscIdUnique 48
+parAtRelIdKey = mkPreludeMiscIdUnique 49
+parGlobalIdKey = mkPreludeMiscIdUnique 50
+parLocalIdKey = mkPreludeMiscIdUnique 51
\end{code}
Certain class operations from Prelude classes. They get
their own uniques so we can look them up easily when we want
to conjure them up during type checking.
\begin{code}
-fromIntClassOpKey = mkPreludeMiscIdUnique 53
-fromIntegerClassOpKey = mkPreludeMiscIdUnique 54
-minusClassOpKey = mkPreludeMiscIdUnique 69
+fromIntClassOpKey = mkPreludeMiscIdUnique 52
+fromIntegerClassOpKey = mkPreludeMiscIdUnique 53
+minusClassOpKey = mkPreludeMiscIdUnique 54
fromRationalClassOpKey = mkPreludeMiscIdUnique 55
enumFromClassOpKey = mkPreludeMiscIdUnique 56
enumFromThenClassOpKey = mkPreludeMiscIdUnique 57
enumFromToClassOpKey = mkPreludeMiscIdUnique 58
enumFromThenToClassOpKey= mkPreludeMiscIdUnique 59
-eqClassOpKey = mkPreludeMiscIdUnique 60
+eqClassOpKey = mkPreludeMiscIdUnique 50
geClassOpKey = mkPreludeMiscIdUnique 61
zeroClassOpKey = mkPreludeMiscIdUnique 62
thenMClassOpKey = mkPreludeMiscIdUnique 63 -- (>>=)
fromEnumClassOpKey = mkPreludeMiscIdUnique 65
mainKey = mkPreludeMiscIdUnique 66
-mainPrimIoKey = mkPreludeMiscIdUnique 67
-returnMClassOpKey = mkPreludeMiscIdUnique 68
--- Used for minusClassOp 69
-otherwiseIdKey = mkPreludeMiscIdUnique 70
-toEnumClassOpKey = mkPreludeMiscIdUnique 71
+returnMClassOpKey = mkPreludeMiscIdUnique 67
+otherwiseIdKey = mkPreludeMiscIdUnique 68
+toEnumClassOpKey = mkPreludeMiscIdUnique 69
+\end{code}
+
+\begin{code}
+inlineIdKey = mkPreludeMiscIdUnique 70
+coerceIdKey = mkPreludeMiscIdUnique 71
+assertIdKey = mkPreludeMiscIdUnique 72
\end{code}