From 9008f5e5149514f61edf0bc9498985e58595cf40 Mon Sep 17 00:00:00 2001 From: simonmar Date: Thu, 6 Oct 2005 10:38:54 +0000 Subject: [PATCH] [project @ 2005-10-06 10:38:54 by simonmar] add splitHsFunType From: Autrijus Tang --- ghc/compiler/hsSyn/HsTypes.lhs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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} -- 1.7.10.4