diff --git a/ghc/compiler/parser/hsparser.y b/ghc/compiler/parser/hsparser.y
index 970412abc8551e0f2dbafad9c520c55514dd3757..5c3910a14b510e6a16a1f92c251904ef6109637a 100644
--- a/ghc/compiler/parser/hsparser.y
+++ b/ghc/compiler/parser/hsparser.y
@@ -408,8 +408,8 @@ import	:  var					{ $$ = mkentid(mknoqual($1)); }
 	;
 
 itycon	:  tycon				{ $$ = mknoqual($1); }
-	|  OBRACK CBRACK			{ $$ = creategid(-1); }         
-	|  OPAREN CPAREN			{ $$ = creategid(0); }         
+	|  OBRACK CBRACK			{ $$ = creategid(NILGID); }
+	|  OPAREN CPAREN			{ $$ = creategid(UNITGID); }         
 	|  OPAREN commas CPAREN 		{ $$ = creategid($2); }
 	;
 
@@ -677,9 +677,9 @@ atype  	:  gtycon				{ $$ = mktname($1); }
         ;
 
 gtycon	:  qtycon
-	|  OPAREN RARROW CPAREN			{ $$ = creategid(-2); }
-	|  OBRACK CBRACK			{ $$ = creategid(-1); }         
-	|  OPAREN CPAREN			{ $$ = creategid(0); }         
+	|  OPAREN RARROW CPAREN			{ $$ = creategid(ARROWGID); }
+	|  OBRACK CBRACK			{ $$ = creategid(NILGID); }         
+	|  OPAREN CPAREN			{ $$ = creategid(UNITGID); }         
 	|  OPAREN commas CPAREN 		{ $$ = creategid($2); }
 	;
 
@@ -1314,14 +1314,14 @@ apatck	:  qvark		 		{ $$ = mkident($1); }
 
 
 gcon	:  qcon
-	|  OBRACK CBRACK			{ $$ = creategid(-1); }
-	|  OPAREN CPAREN			{ $$ = creategid(0); }
+	|  OBRACK CBRACK			{ $$ = creategid(NILGID); }
+	|  OPAREN CPAREN			{ $$ = creategid(UNITGID); }
 	|  OPAREN commas CPAREN			{ $$ = creategid($2); }
 	;
 
 gconk	:  qconk
-	|  obrackkey CBRACK			{ $$ = creategid(-1); }
-	|  oparenkey CPAREN			{ $$ = creategid(0); }
+	|  obrackkey CBRACK			{ $$ = creategid(NILGID); }
+	|  oparenkey CPAREN			{ $$ = creategid(UNITGID); }
 	|  oparenkey commas CPAREN		{ $$ = creategid($2); }
 	;
 
diff --git a/ghc/compiler/parser/id.c b/ghc/compiler/parser/id.c
index 04228be114e11d2a28be5e864dba431015c48210..053dc449f71f7169caefd0082c4bad98bad0d106 100644
--- a/ghc/compiler/parser/id.c
+++ b/ghc/compiler/parser/id.c
@@ -281,11 +281,12 @@ qid_to_pmod(q)
    look at qid.ugn) with a key (number) and a string.  Here's the 
    deal
 
-		key
-		-2	function arrow ->
-		-1	list type constructor [], or the empty list []
-		0	unit type constructor (), or the unity value ()
-		n	n-tuple type constructor (,,,)
+	key
+
+	ARROWCON   function arrow ->
+	LISTCON	   list type constructor [], or the empty list []
+	UNITCON	   unit type constructor (), or the unity value ()
+	n	   n-tuple type constructor (,,,)
 */
 		
 qid
@@ -293,11 +294,11 @@ creategid(i)
   long i;
 {
   switch(i) {
-    case -2:
+    case ARROWGID:
       return(mkgid(i,install_literal("->")));
-    case -1:
+    case NILGID:
       return(mkgid(i,install_literal("[]")));
-    case  0:
+    case UNITGID:
       return(mkgid(i,install_literal("()")));
     default:
       {
diff --git a/ghc/compiler/parser/id.h b/ghc/compiler/parser/id.h
index b0fd009aa4e820a38c259ac752e12ac29c296b9a..841fdbfdd682964d0698103fafdab531a77cf95c 100644
--- a/ghc/compiler/parser/id.h
+++ b/ghc/compiler/parser/id.h
@@ -12,4 +12,15 @@ typedef Hstring *hstring;
 long  get_hstring_len  PROTO((hstring));
 char *get_hstring_bytes PROTO((hstring));
 
+id installid PROTO((char *));		     /* Create a new identifier */
+hstring installHstring PROTO((int, char *)); /* Create a new literal string */
+
+/* defines for special-syntax ids, see comment next
+   to creategid()
+*/
+#define ARROWGID   (-2)
+#define NILGID     (-1)
+#define UNITGID    (0)
+
+
 #endif