From 4a1b418e39175d1ee3482a309eb691ce29dc3199 Mon Sep 17 00:00:00 2001 From: simonpj Date: Thu, 19 Jul 2001 09:26:09 +0000 Subject: [PATCH] [project @ 2001-07-19 09:26:08 by simonpj] Move eqListBy to Util, and use it --- ghc/compiler/hsSyn/HsCore.lhs | 3 ++- ghc/compiler/hsSyn/HsDecls.lhs | 1 + ghc/compiler/hsSyn/HsTypes.lhs | 7 +------ ghc/compiler/utils/Util.lhs | 7 ++++++- 4 files changed, 10 insertions(+), 8 deletions(-) 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 -- 1.7.10.4