[commit: ghc] master: Document Proxy# (#8658) (d4f0fcf)

git at git.haskell.org git at git.haskell.org
Thu Jan 9 07:03:11 UTC 2014


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/d4f0fcf368765ae4aa7ebe914bc2f254026694c8/ghc

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

commit d4f0fcf368765ae4aa7ebe914bc2f254026694c8
Author: Austin Seipp <austin at well-typed.com>
Date:   Thu Jan 9 01:02:56 2014 -0600

    Document Proxy# (#8658)
    
    Signed-off-by: Austin Seipp <austin at well-typed.com>


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

d4f0fcf368765ae4aa7ebe914bc2f254026694c8
 compiler/prelude/primops.txt.pp |   12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/compiler/prelude/primops.txt.pp b/compiler/prelude/primops.txt.pp
index b3cf2f4..36eec67 100644
--- a/compiler/prelude/primops.txt.pp
+++ b/compiler/prelude/primops.txt.pp
@@ -2228,6 +2228,18 @@ section "Etc"
 	{Miscellaneous built-ins}
 ------------------------------------------------------------------------
 
+primtype Proxy# a
+   { The type constructor {\tt Proxy#} is used to bear witness to some
+   type variable. It's used when you want to pass around proxy values
+   for doing things like modelling type applications. A {\tt Proxy#}
+   is not only unboxed, it also has a polymorphic kind, and has no
+   runtime representation, being totally free. }
+
+pseudoop "proxy#"
+   Proxy# a
+   { Witness for an unboxed {\tt Proxy#} value, which has no runtime
+   representation. }
+
 pseudoop   "seq"
    a -> b -> b
    { Evaluates its first argument to head normal form, and then returns its second



More information about the ghc-commits mailing list