[Improve (->) situation somewhat
Samuel Bronson <naesten@gmail.com>**20080318033431
 Control.Arrow still won't quite work... something about Control.Arrow.172_a not getting a kind inferred...
] hunk ./FrontEnd/Class.hs 36
+import FrontEnd.Tc.Kind
hunk ./FrontEnd/Class.hs 247
-   | classKind == argTypeKind
+   | length classKind == length argTypeKind, and subsumptions
hunk ./FrontEnd/Class.hs 252
-                      " (with kind " ++ show classKind ++ ")"
+                      " (with kind " ++ show classKind ++ ") " ++ show subsumptions
hunk ./FrontEnd/Class.hs 257
+   subsumptions = zipWith isSubsumedBy classKind argTypeKind
hunk ./FrontEnd/HsParser.y 98
+      '?'     { Quest }
hunk ./FrontEnd/HsParser.y 430
+       |  '?'                   { hsKindQuest }
hunk ./FrontEnd/HsParser.y 876
+      | '?'                   { UnQual (hsSymbol "?") }
hunk ./FrontEnd/HsParser.y 966
-fun_tycon_name        = Qual (Module "Jhc@") (HsIdent "->")
+fun_tycon_name        = Qual (Module "Jhc.Basics") (HsIdent "->")
hunk ./FrontEnd/HsSyn.hs 434
+hsKindQuest = HsKind (Qual (Module "Jhc@") (HsIdent "?"))
hunk ./FrontEnd/KindInfer.hs 314
-hsKindToKind a | a == hsKindStar = kindStar
-hsKindToKind a | a == hsKindHash = kindHash
+hsKindToKind a | a == hsKindStar       = kindStar
+               | a == hsKindHash       = kindHash
+               | a == hsKindQuest      = kindFunRet
+               | a == hsKindQuestQuest = kindArg
hunk ./FrontEnd/Lexer.hs 83
+        | Quest
hunk ./FrontEnd/Lexer.hs 150
- ( "??",  QuestQuest ),--ditto
- ( "*!",  StarBang ),--ditto
+ ( "?",  Quest ),     --ditto
+ ( "??", QuestQuest ),--ditto
+ ( "*!", StarBang ),--ditto
hunk ./FrontEnd/Rename.hs 102
+            | nameName tc_Arrow == hsName, Module "Jhc.Basics" == mod
+                = let nn = hsName in (nn,nn):r
hunk ./FrontEnd/Rename.hs 710
+    | nameName tc_Arrow == hsName = return hsName
hunk ./FrontEnd/Representation.hs 337
-                     x -> error $ "Type.getType: kind error in: " ++ (show typ)
+                     x -> error $ "Representation.getType: kind error in: " ++ (show typ)
hunk ./FrontEnd/Tc/Kind.hs 12
+    isSubsumedBy,
hunk ./FrontEnd/Tc/Kind.hs 41
-    *?  #
-   /  \
-  *    !
+    *  #
+
hunk ./FrontEnd/Tc/Kind.hs 58
+KNamed s1 `isSubsumedBy2` KNamed s2   = s1 == s2
+_         `isSubsumedBy2` KQuest      = True
+Star      `isSubsumedBy2` KQuestQuest = True
+KHash     `isSubsumedBy2` KQuestQuest = True
+k1        `isSubsumedBy2` k2          = k1 == k2
+
hunk ./FrontEnd/Tc/Kind.hs 76
+KBase kb    `isSubsumedBy` KBase kb'    = isSubsumedBy2 kb kb'
+Kfun  k1 k2 `isSubsumedBy` Kfun k1' k2' = isSubsumedBy k1 k1' && isSubsumedBy k2 k2'
+_           `isSubsumedBy` _            = False
+
hunk ./FrontEnd/Tc/Monad.hs 423
-evalType t = findType t >>= evalTAssoc
+evalType t = findType t >>= evalTAssoc >>= evalArrowApp
hunk ./FrontEnd/Tc/Monad.hs 439
+
+evalArrowApp (TAp (TAp (TCon tcon) ta) tb) 
+    | tyconName tcon == tc_Arrow = return (TArrow ta tb) 
+
+evalArrowApp t = return t
+
+
hunk ./Name/Names.hs 64
+tc_Box = toName TypeConstructor    ("Jhc@","Box")
hunk ./lib/base/Jhc/Basics.hs 7
+data (->) :: ?? -> ? -> *