From: simonpj Date: Thu, 19 Jul 2001 09:26:09 +0000 (+0000) Subject: [project @ 2001-07-19 09:26:08 by simonpj] X-Git-Tag: Approximately_9120_patches~1508 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=4a1b418e39175d1ee3482a309eb691ce29dc3199;p=ghc-hetmet.git [project @ 2001-07-19 09:26:08 by simonpj] Move eqListBy to Util, and use it --- diff --git a/ghc/compiler/hsSyn/HsCore.lhs b/ghc/compiler/hsSyn/HsCore.lhs index dd1d718..83dbd8b 100644 --- a/ghc/compiler/hsSyn/HsCore.lhs +++ b/ghc/compiler/hsSyn/HsCore.lhs @@ -26,7 +26,7 @@ module HsCore ( -- friends: import HsTypes ( HsType, pprParendHsType, pprHsTyVarBndr, toHsType, HsTupCon(..), EqHsEnv, hsTupParens, - emptyEqHsEnv, extendEqHsEnv, eqListBy, + emptyEqHsEnv, extendEqHsEnv, eq_hsType, eq_hsVars ) @@ -48,6 +48,7 @@ import Type ( Kind, eqKind ) import BasicTypes ( Arity ) import FiniteMap ( lookupFM ) import CostCentre +import Util ( eqListBy ) import Outputable \end{code} diff --git a/ghc/compiler/hsSyn/HsDecls.lhs b/ghc/compiler/hsSyn/HsDecls.lhs index ebf82a7..e305963 100644 --- a/ghc/compiler/hsSyn/HsDecls.lhs +++ b/ghc/compiler/hsSyn/HsDecls.lhs @@ -42,6 +42,7 @@ import FunDeps ( pprFundeps ) import Class ( FunDep, DefMeth(..) ) import CStrings ( CLabelString ) import Outputable +import Util ( eqListBy ) import SrcLoc ( SrcLoc ) import FastString \end{code} diff --git a/ghc/compiler/hsSyn/HsTypes.lhs b/ghc/compiler/hsSyn/HsTypes.lhs index b6f2a8d..af66087 100644 --- a/ghc/compiler/hsSyn/HsTypes.lhs +++ b/ghc/compiler/hsSyn/HsTypes.lhs @@ -46,6 +46,7 @@ import PrelNames ( mkTupConRdrName, listTyConKey, usOnceTyConKey, usManyTyConKey usOnceTyConName, usManyTyConName ) import FiniteMap +import Util ( eqListBy ) import Outputable \end{code} @@ -470,10 +471,4 @@ eq_hsPred env (HsClassP c1 tys1) (HsClassP c2 tys2) eq_hsPred env (HsIParam n1 ty1) (HsIParam n2 ty2) = n1 == n2 && eq_hsType env ty1 ty2 eq_hsPred env _ _ = False - -------------------- -eqListBy :: (a->a->Bool) -> [a] -> [a] -> Bool -eqListBy eq [] [] = True -eqListBy eq (x:xs) (y:ys) = eq x y && eqListBy eq xs ys -eqListBy eq xs ys = False \end{code} diff --git a/ghc/compiler/utils/Util.lhs b/ghc/compiler/utils/Util.lhs index 423ab3f..b1c93a8 100644 --- a/ghc/compiler/utils/Util.lhs +++ b/ghc/compiler/utils/Util.lhs @@ -41,7 +41,7 @@ module Util ( foldl2, count, -- comparisons - thenCmp, cmpList, prefixMatch, suffixMatch, + eqListBy, thenCmp, cmpList, prefixMatch, suffixMatch, -- strictness foldl', seqList, @@ -639,6 +639,11 @@ count p (x:xs) | p x = 1 + count p xs %************************************************************************ \begin{code} +eqListBy :: (a->a->Bool) -> [a] -> [a] -> Bool +eqListBy eq [] [] = True +eqListBy eq (x:xs) (y:ys) = eq x y && eqListBy eq xs ys +eqListBy eq xs ys = False + thenCmp :: Ordering -> Ordering -> Ordering {-# INLINE thenCmp #-} thenCmp EQ any = any