[quickcheck: fix Type shrinker to be kind-correct
Helmut Grohne <grohne@cs.uni-bonn.de>**20150309130845
 Ignore-this: c9cb1684c03ac2336faed3582c260a0c
] 
<
[quickcheck: generate more and larger tuples
Helmut Grohne <grohne@cs.uni-bonn.de>**20150309130724
 Ignore-this: 1885b465841b9be0ea7e5717abc1b04d
] 
> hunk ./src/Tests.hs 9
+import Data.Maybe (fromJust)
hunk ./src/Tests.hs 63
+kindOf (VarT {})       = Star
+kindOf (AppT t _)      = let _ `Arrow` r = kindOf t in r
+kindOf (ForallT _ _ t) = kindOf t
+kindOf c@(ConT {})     = fromJust $ lookup c simpleTypeKinds
+
hunk ./src/Tests.hs 71
-  shrink (AppT a b)      = a : b : map (flip AppT b) (QC.shrink a) ++ map (AppT a) (QC.shrink b)
+  shrink a@(AppT b c)    =
+      (if kindOf a == kindOf c then (c:) else id) $
+      map (flip AppT c) (QC.shrink b) ++ map (AppT b) (QC.shrink c)