Use tyConArity rather than (length tvs)
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 2 Mar 2016 15:22:46 +0000 (15:22 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Wed, 2 Mar 2016 15:24:51 +0000 (15:24 +0000)
A bit more efficient

compiler/types/TyCon.hs

index 5d01732..3c0a945 100644 (file)
@@ -1798,10 +1798,9 @@ expandSynTyCon_maybe
 
 -- ^ Expand a type synonym application, if any
 expandSynTyCon_maybe tc tys
-  | SynonymTyCon { tyConTyVars = tvs, synTcRhs = rhs } <- tc
-  , let n_tvs = length tvs
-  = case n_tvs `compare` length tys of
-        LT -> Just (tvs `zip` tys, rhs, drop n_tvs tys)
+  | SynonymTyCon { tyConTyVars = tvs, synTcRhs = rhs, tyConArity = arity } <- tc
+  = case arity `compare` length tys of
+        LT -> Just (tvs `zip` tys, rhs, drop arity tys)
         EQ -> Just (tvs `zip` tys, rhs, [])
         GT -> Nothing
    | otherwise