module HsAssocUtil where import Maybe(fromMaybe) import HsAssocStruct {- class InfixEnv i env | env->i where extend :: env -> (i,HsFixity) -> env extend2 :: env -> env -> env defaultOps :: env -> [i] -> env lookUp :: env -> i -> Maybe HsFixity -} newtype OperatorEnv i = OperatorEnv [(i,HsFixity)] deriving (Show) unOE (OperatorEnv e) = e emptyOE = OperatorEnv [] --instance Eq i => InfixEnv i (OperatorEnv i) where extend (OperatorEnv env) i = OperatorEnv (i: env) extend2 (OperatorEnv env1) (OperatorEnv env2) = OperatorEnv (env2++env1) defaultOps (OperatorEnv env) ns = OperatorEnv [f|f@(i,_)<-env,i `notElem` ns] lookUp (OperatorEnv env) n = lookup n env getFixity env = fromMaybe defaultFixity . lookUp env defaultFixity = HsFixity HsAssocLeft 9 -- See Haskell 98 Report, Section 4.4.2 -- Dubious functions, should be removed: --getPrec env name = case getFixity env name of HsFixity a p->p --getAssoc env name = case getFixity env name of HsFixity a p->a {- old verions: getPrec env name = case (lookUp env name) of Just (HsFixity a p) -> p Nothing -> 9 -- See the Report, section 4.4.2 getAssoc env name = case lookUp env name of Just (HsFixity a p) -> a Nothing -> HsAssocLeft -- See the Report, section 4.4.2 -}