Permalink
Browse files

primops.txt.pp: add missing type application in description of GHC.Pr…

…im.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
  • Loading branch information...
1 parent 51bbdda commit e11c554e94c39223ea55991a552ccb244dfe4364 @megacz megacz committed with igfoo Apr 23, 2011
Showing with 12 additions and 2 deletions.
  1. +12 −2 compiler/prelude/primops.txt.pp
@@ -1738,9 +1738,19 @@
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,

0 comments on commit e11c554

Please sign in to comment.