primops.txt.pp: add missing type application in description of GHC.Prim.Any
authorAdam Megacz <megacz@cs.berkeley.edu>
Sat, 23 Apr 2011 03:22:06 +0000 (20:22 -0700)
committerIan Lynagh <igloo@earth.li>
Thu, 28 Apr 2011 19:17:05 +0000 (20:17 +0100)
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

index 7d80db4..49f7a97 100644 (file)
@@ -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
            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,
 
        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,