[improve handling of conversion between the arrow constructor and the arrow function
John Meacham <john@repetae.net>**20090226111508
 Ignore-this: df74f3409e97a22170d17bee25441ae5
] hunk ./E/FromHs.hs 86
+    f (TAp (TAp (TCon arr) a1) a2) | tyconName arr == tc_Arrow = f (TArrow a1 a2)
hunk ./E/Subst.hs 44
+import Name.Names
hunk ./E/Subst.hs 191
+eAp (ELit LitCons { litName = arr, litArgs = [a1], litType = (EPi _ r) }) a2 | arr == tc_Arrow = EPi tvr { tvrType = a1  } a2
hunk ./E/TypeCheck.hs 519
+    un (EPi va ea) (ELit LitCons { litName = ar, litArgs = [x,y], litType = lt}) c | ar == tc_Arrow = do
+        un (tvrType va) x c
+        un ea y c
hunk ./E/TypeCheck.hs 537
+    un (EAp a b) (EPi TVr { tvrType = a1 } a2) c = do
+        un a (ELit litCons { litArgs = [a1], litName = tc_Arrow, litType = EPi tvr { tvrType = getType a2 } (getType a1) }) c
+        un b a2 c
hunk ./E/TypeCheck.hs 544
-    un a b c | Just a' <- followAlias undefined a = un a' b c
+    --un a b c | Just a' <- followAlias undefined a = un a' b c
hunk ./FrontEnd/Representation.hs 100
-tArrow = TCon (Tycon tc_Arrow (kindArg `Kfun` kindFunRet `Kfun` kindStar))
+tArrow = TCon (Tycon tc_Arrow (kindArg `Kfun` (kindFunRet `Kfun` kindStar)))
hunk ./FrontEnd/Tc/Kind.hs 70
+infixr 5 `Kfun`
+
hunk ./FrontEnd/Tc/Type.hs 185
+            ft (TAp (TAp (TCon arr) a1) a2) | tyconName arr == tc_Arrow = ft (TArrow a1 a2)
hunk ./FrontEnd/Tc/Unify.hs 22
+import Name.Names
hunk ./FrontEnd/Tc/Unify.hs 90
+    sub t1@TArrow {} t2@TAp {} = boxyMatch t1 t2 >> return ctId
hunk ./FrontEnd/Tc/Unify.hs 92
+
hunk ./FrontEnd/Tc/Unify.hs 112
+tArrow_star :: Type
+tArrow_star = TCon (Tycon tc_Arrow (kindStar `Kfun` (kindStar `Kfun` kindStar)))
+
hunk ./FrontEnd/Tc/Unify.hs 169
+    bm t@(TArrow s1 s2) (TAp (TAp arr a1) a2) = do
+        printRule "AF2-arrow"
+        tArrow `boxyMatch` arr
+        boxyMatch s1 a1
+        boxyMatch s2 a2
+        return False