From: simonmar Date: Thu, 6 Oct 2005 10:38:54 +0000 (+0000) Subject: [project @ 2005-10-06 10:38:54 by simonmar] X-Git-Tag: Initial_conversion_from_CVS_complete~190 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=9008f5e5149514f61edf0bc9498985e58595cf40;p=ghc-hetmet.git [project @ 2005-10-06 10:38:54 by simonmar] add splitHsFunType From: Autrijus Tang --- diff --git a/ghc/compiler/hsSyn/HsTypes.lhs b/ghc/compiler/hsSyn/HsTypes.lhs index 3089050..8ad5940 100644 --- a/ghc/compiler/hsSyn/HsTypes.lhs +++ b/ghc/compiler/hsSyn/HsTypes.lhs @@ -17,7 +17,7 @@ module HsTypes ( mkExplicitHsForAllTy, mkImplicitHsForAllTy, hsTyVarName, hsTyVarNames, replaceTyVarName, hsLTyVarName, hsLTyVarNames, hsLTyVarLocName, hsLTyVarLocNames, - splitHsInstDeclTy, + splitHsInstDeclTy, splitHsFunType, -- Type place holder PostTcType, placeHolderType, @@ -235,6 +235,13 @@ splitHsInstDeclTy inst_ty where split_tau tvs cxt (HsPredTy (HsClassP cls tys)) = (tvs, cxt, cls, tys) split_tau tvs cxt (HsParTy (L _ ty)) = split_tau tvs cxt ty + +-- Splits HsType into the (init, last) parts +splitHsFunType :: LHsType name -> ([LHsType name], LHsType name) +splitHsFunType (L l (HsFunTy x y)) = (x:args, res) + where + (args, res) = splitHsFunType y +splitHsFunType other = ([], other) \end{code}