extractTyVars :: [LHsType RdrName] -> P [LHsTyVarBndr RdrName]
extractTyVars tvs = collects tvs []
where
- -- Collect all variables (1st arg serves as an accumulator)
+ -- Collect all variables (2nd arg serves as an accumulator)
+ collect :: LHsType RdrName -> [LHsTyVarBndr RdrName]
+ -> P [LHsTyVarBndr RdrName]
collect (L l (HsForAllTy _ _ _ _)) =
const $ parseError l "Forall type not allowed as type parameter"
collect (L l (HsTyVar tv))
_ -> patFail loc
HsPar e -> checkLPat e >>= (return . ParPat)
- ExplicitList _ es -> do ps <- mapM (\e -> checkLPat e) es
+ ExplicitList _ es -> do ps <- mapM checkLPat es
return (ListPat ps placeHolderType)
- ExplicitPArr _ es -> do ps <- mapM (\e -> checkLPat e) es
+ ExplicitPArr _ es -> do ps <- mapM checkLPat es
return (PArrPat ps placeHolderType)
- ExplicitTuple es b -> do ps <- mapM (\e -> checkLPat e) es
+ ExplicitTuple es b -> do ps <- mapM checkLPat es
return (TuplePat ps b placeHolderType)
RecordCon c _ (HsRecFields fs dd)
parse2 _ _ [] = d'oh
parse2 isStatic kind (('[':x):xs) =
case x of
+ [] -> d'oh
vs | last vs == ']' -> parse3 isStatic kind (init vs) xs
_ -> d'oh
parse2 isStatic kind xs = parse3 isStatic kind "" xs