[commit: ghc] master: primops.txt.pp: add missing type application in description of GHC.Prim.Any (e11c554)

Ian Lynagh igloo at earth.li
Thu Apr 28 22:30:11 CEST 2011


Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/e11c554e94c39223ea55991a552ccb244dfe4364

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

commit e11c554e94c39223ea55991a552ccb244dfe4364
Author: Adam Megacz <megacz at cs.berkeley.edu>
Date:   Fri Apr 22 20:22:06 2011 -0700

    primops.txt.pp: add missing type application in description of GHC.Prim.Any
    
    Understanding GHC.Prim.Any is all about understanding the need for
    explicit type applications in CoreSyn; the previous example had one
    explicit type application but was missing the other, which this patch
    adds.  It also expands the explanation, based on SPJ's post here:
    
      http://article.gmane.org/gmane.comp.lang.haskell.cvs.ghc/46551

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

 compiler/prelude/primops.txt.pp |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/compiler/prelude/primops.txt.pp b/compiler/prelude/primops.txt.pp
index 7d80db4..49f7a97 100644
--- a/compiler/prelude/primops.txt.pp
+++ b/compiler/prelude/primops.txt.pp
@@ -1738,9 +1738,19 @@ primtype Any a
 	    but never enters a function value.  
 
 	It's also used to instantiate un-constrained type variables after type
-	checking.  For example
+	checking.  For example, {\tt length} has type
 
-	{\tt length Any []}
+	{\tt length :: forall a. [a] -> Int}
+
+	and the list datacon for the empty list has type
+
+	{\tt [] :: forall a. [a]}
+
+	In order to compose these two terms as {\tt length []} a type
+	application is required, but there is no constraint on the
+	choice.  In this situation GHC uses {\tt Any}:
+
+	{\tt length Any ([] Any)}
 
 	Annoyingly, we sometimes need {\tt Any}s of other kinds, such as {\tt (* -> *)} etc.
 	This is a bit like tuples.   We define a couple of useful ones here,





More information about the Cvs-ghc mailing list