[add tAp and tArrow abstract constructors
John Meacham <john@repetae.net>**20090218155530
 Ignore-this: 981e0ff4dd14dfbfd58b1477d3126919
] hunk ./FrontEnd/Representation.hs 33
-    tList
+    tList,
+    tArrow,
+    tAp
hunk ./FrontEnd/Representation.hs 96
+tList :: Type
hunk ./FrontEnd/Representation.hs 99
+-- | The @(->)@ type constructor. Invariant: @tArrow@ shall not be fully applied. To this end, see 'tAp'.
+tArrow :: Type
+tArrow = TCon (Tycon tc_Arrow (kindArg `Kfun` kindFunRet `Kfun` kindStar))
+
+-- | Type application, enforcing the invariant that there be no fully-applied 'tArrow's
+tAp :: Type -> Type -> Type
+tAp (TAp c@TCon{} a) b | c == tArrow = TArrow a b
+tAp a b = TAp a b
+
hunk ./FrontEnd/Tc/Type.hs 31
+    tAp,
+    tArrow,