Changeset 12425 for src/Pugs/Eval

Show
Ignore:
Timestamp:
08/18/06 21:01:52 (2 years ago)
Author:
audreyt
Message:

* Pugs.Eval.Var: Refactor findSyms a bit to improve

readability and possibly win on branch predictaion.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Eval/Var.hs

    r12424 r12425  
    588588findSyms :: Var -> Eval [(Var, Val)] 
    589589findSyms var 
    590     | Just var' <- dropVarPkg (__"OUTER") var = do 
    591         maybeOuter <- asks envOuter 
    592         case maybeOuter of 
    593             Just env -> local (const env) $ findSyms var' 
    594             Nothing  -> return [] 
    595 findSyms var = do 
    596     runMaybeT findAll >>= maybe (return []) return 
     590    | isGlobalVar var    = findWith findGlobal 
     591    | isQualifiedVar var = case dropVarPkg (__"OUTER") var of 
     592        Just var' -> do 
     593            maybeOuter <- asks envOuter 
     594            case maybeOuter of 
     595                Just env -> local (const env) $ findSyms var' 
     596                Nothing  -> return [] 
     597        _              -> findWith findQualified 
     598    | otherwise         = findWith (findLexical `mplus` findPackage) 
    597599    where 
    598     findAll 
    599         | isGlobalVar var       = findGlobal 
    600         | isQualifiedVar var    = findQualified 
    601         | otherwise             = findLexical `mplus` findPackage 
     600    findWith f = runMaybeT f >>= maybe (return []) return 
    602601 
    603602    -- $x should look up $x in the current pad first.