From 8574f3b42b28eb9bc1471e4dd40a24035a40cb63 Mon Sep 17 00:00:00 2001 From: Max Bolingbroke Date: Thu, 31 Jul 2008 01:23:34 +0000 Subject: [PATCH] Document Unique --- compiler/basicTypes/Unique.lhs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/compiler/basicTypes/Unique.lhs b/compiler/basicTypes/Unique.lhs index 7a38d4e..381503d 100644 --- a/compiler/basicTypes/Unique.lhs +++ b/compiler/basicTypes/Unique.lhs @@ -17,7 +17,11 @@ Haskell). \begin{code} module Unique ( - Unique, Uniquable(..), hasKey, + -- * Main data types + Unique, Uniquable(..), + + -- ** Constructors, desctructors and operations on 'Unique's + hasKey, pprUnique, @@ -32,6 +36,8 @@ module Unique ( isTupleKey, + -- ** Making built-in uniques + -- now all the built-in Uniques (and functions to make them) -- [the Oh-So-Wonderful Haskell module system wins again...] mkAlphaTyVarUnique, @@ -77,6 +83,10 @@ Fast comparison is everything on @Uniques@: \begin{code} --why not newtype Int? + +-- | The type of unique identifiers that are used in many places in GHC +-- for fast ordering and equality tests. You should generate these with +-- the functions from the 'UniqSupply' module data Unique = MkUnique FastInt \end{code} @@ -147,6 +157,7 @@ unpkUnique (MkUnique u) %************************************************************************ \begin{code} +-- | Class of things that we can obtain a 'Unique' from class Uniquable a where getUnique :: a -> Unique @@ -277,6 +288,8 @@ Allocation of unique supply characters: X: uniques derived by deriveUnique _: unifiable tyvars (above) 0-9: prelude things below + (no numbers left any more..) + :: (prelude) parallel array data constructors other a-z: lower case chars for unique supplies. Used so far: @@ -325,8 +338,8 @@ mkTupleDataConUnique Unboxed a = mkUnique '8' (2*a) isTupleKey u = case unpkUnique u of (tag,_) -> tag == '4' || tag == '5' || tag == '7' || tag == '8' -mkPrimOpIdUnique op = mkUnique '9' op -mkPreludeMiscIdUnique i = mkUnique '0' i +mkPrimOpIdUnique op = mkUnique '9' op +mkPreludeMiscIdUnique i = mkUnique '0' i -- No numbers left anymore, so I pick something different for the character -- tag -- 1.7.10.4