Repository : ssh://darcs.haskell.org//srv/darcs/packages/ghc-prim

On branch  : no-pred-ty

http://hackage.haskell.org/trac/ghc/changeset/3d2146521b7c13303b53901d92478e65069ebf79

>---------------------------------------------------------------

commit 3d2146521b7c13303b53901d92478e65069ebf79
Author: Max Bolingbroke <[email protected]>
Date:   Mon Aug 15 10:37:49 2011 +0100

    Boxes for implicit parameters and equality evidence

>---------------------------------------------------------------

 GHC/Types.hs |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/GHC/Types.hs b/GHC/Types.hs
index 005a588..ed241a2 100644
--- a/GHC/Types.hs
+++ b/GHC/Types.hs
@@ -17,7 +17,8 @@
 
 module GHC.Types (
         Bool(..), Char(..), Int(..),
-        Float(..), Double(..), IO(..)
+        Float(..), Double(..), IO(..),
+        IPBox(..)
     ) where
 
 import GHC.Prim
@@ -74,6 +75,20 @@ or the '>>' and '>>=' operations from the 'Monad' class.
 newtype IO a = IO (State# RealWorld -> (# State# RealWorld, a #))
 
 
+-- | A data constructor used to box up all implicit parameter arguments
+--
+-- This is very special in that we never use the IPBox TyCon directly.
+-- Instead, internally GHC attributes many different TyCons (one for
+-- each implicit parameter name) to the IPBox data constructor
+data IPBox a = IPBox a
+
+-- | A data constructor used to box up all unlifted equalities
+--
+-- The type constructor is special in that GHC pretends that it
+-- has kind (? -> ? -> Fact) rather than (* -> * -> *)
+data (~) a b = EqBox (Eq# a b)
+
+
 
--------------------------------------------------------------------------------
 -- Generic representations
 
--------------------------------------------------------------------------------



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to