remove over-specified traversal arguments

This commit is contained in:
Zachary Snow 2020-06-20 23:08:40 -04:00
parent 2535d689aa
commit 0fb97f2381
1 changed files with 12 additions and 15 deletions

View File

@ -208,8 +208,7 @@ collectStmtsM = collectStmtsM' IncludeTFs
-- higher levels up -- higher levels up
traverseNestedStmtsM :: Monad m => MapperM m Stmt -> MapperM m Stmt traverseNestedStmtsM :: Monad m => MapperM m Stmt -> MapperM m Stmt
traverseNestedStmtsM mapper = fullMapper traverseNestedStmtsM mapper = fullMapper
where where fullMapper = mapper >=> traverseSinglyNestedStmtsM fullMapper
fullMapper stmt = mapper stmt >>= traverseSinglyNestedStmtsM fullMapper
-- variant of the above which only traverses one level down -- variant of the above which only traverses one level down
traverseSinglyNestedStmtsM :: Monad m => MapperM m Stmt -> MapperM m Stmt traverseSinglyNestedStmtsM :: Monad m => MapperM m Stmt -> MapperM m Stmt
@ -407,7 +406,7 @@ collectStmtLHSsM = collectify traverseStmtLHSsM
traverseNestedExprsM :: Monad m => MapperM m Expr -> MapperM m Expr traverseNestedExprsM :: Monad m => MapperM m Expr -> MapperM m Expr
traverseNestedExprsM mapper = exprMapper traverseNestedExprsM mapper = exprMapper
where where
exprMapper e = mapper e >>= em exprMapper = mapper >=> em
(_, _, _, typeMapper) = exprMapperHelpers exprMapper (_, _, _, typeMapper) = exprMapperHelpers exprMapper
typeOrExprMapper (Left t) = typeOrExprMapper (Left t) =
typeMapper t >>= return . Left typeMapper t >>= return . Left
@ -735,8 +734,8 @@ collectStmtExprsM :: Monad m => CollectorM m Expr -> CollectorM m Stmt
collectStmtExprsM = collectify traverseStmtExprsM collectStmtExprsM = collectify traverseStmtExprsM
traverseLHSsM' :: Monad m => TFStrategy -> MapperM m LHS -> MapperM m ModuleItem traverseLHSsM' :: Monad m => TFStrategy -> MapperM m LHS -> MapperM m ModuleItem
traverseLHSsM' strat mapper item = traverseLHSsM' strat mapper =
traverseStmtsM' strat (traverseStmtLHSsM mapper) item >>= traverseModuleItemLHSsM traverseStmtsM' strat (traverseStmtLHSsM mapper) >=> traverseModuleItemLHSsM
where where
traverseModuleItemLHSsM (Assign delay lhs expr) = do traverseModuleItemLHSsM (Assign delay lhs expr) = do
lhs' <- mapper lhs lhs' <- mapper lhs
@ -784,7 +783,7 @@ collectLHSsM = collectLHSsM' IncludeTFs
traverseNestedLHSsM :: Monad m => MapperM m LHS -> MapperM m LHS traverseNestedLHSsM :: Monad m => MapperM m LHS -> MapperM m LHS
traverseNestedLHSsM mapper = fullMapper traverseNestedLHSsM mapper = fullMapper
where where
fullMapper lhs = mapper lhs >>= tl fullMapper = mapper >=> tl
tl (LHSIdent x ) = return $ LHSIdent x tl (LHSIdent x ) = return $ LHSIdent x
tl (LHSBit l e ) = fullMapper l >>= \l' -> return $ LHSBit l' e tl (LHSBit l e ) = fullMapper l >>= \l' -> return $ LHSBit l' e
tl (LHSRange l m r ) = fullMapper l >>= \l' -> return $ LHSRange l' m r tl (LHSRange l m r ) = fullMapper l >>= \l' -> return $ LHSRange l' m r
@ -911,9 +910,9 @@ collectDeclTypesM :: Monad m => CollectorM m Type -> CollectorM m Decl
collectDeclTypesM = collectify traverseDeclTypesM collectDeclTypesM = collectify traverseDeclTypesM
traverseTypesM' :: Monad m => TypeStrategy -> MapperM m Type -> MapperM m ModuleItem traverseTypesM' :: Monad m => TypeStrategy -> MapperM m Type -> MapperM m ModuleItem
traverseTypesM' strategy mapper item = traverseTypesM' strategy mapper =
miMapper item >>= miMapper >=>
traverseDeclsM declMapper >>= traverseDeclsM declMapper >=>
traverseExprsM (traverseNestedExprsM exprMapper) traverseExprsM (traverseNestedExprsM exprMapper)
where where
fullMapper = traverseNestedTypesM mapper fullMapper = traverseNestedTypesM mapper
@ -970,9 +969,7 @@ collectGenItemsM = collectify traverseGenItemsM
-- GenModuleItems -- GenModuleItems
traverseNestedGenItemsM :: Monad m => MapperM m GenItem -> MapperM m GenItem traverseNestedGenItemsM :: Monad m => MapperM m GenItem -> MapperM m GenItem
traverseNestedGenItemsM mapper = fullMapper traverseNestedGenItemsM mapper = fullMapper
where where fullMapper = mapper >=> traverseSinglyNestedGenItemsM fullMapper
fullMapper stmt =
mapper stmt >>= traverseSinglyNestedGenItemsM fullMapper
traverseNestedGenItems :: Mapper GenItem -> Mapper GenItem traverseNestedGenItems :: Mapper GenItem -> Mapper GenItem
traverseNestedGenItems = unmonad traverseNestedGenItemsM traverseNestedGenItems = unmonad traverseNestedGenItemsM
@ -1007,7 +1004,7 @@ traverseSinglyNestedGenItemsM fullMapper = gim
traverseAsgnsM' :: Monad m => TFStrategy -> MapperM m (LHS, Expr) -> MapperM m ModuleItem traverseAsgnsM' :: Monad m => TFStrategy -> MapperM m (LHS, Expr) -> MapperM m ModuleItem
traverseAsgnsM' strat mapper = moduleItemMapper traverseAsgnsM' strat mapper = moduleItemMapper
where where
moduleItemMapper item = miMapperA item >>= miMapperB moduleItemMapper = miMapperA >=> miMapperB
miMapperA (Assign delay lhs expr) = do miMapperA (Assign delay lhs expr) = do
(lhs', expr') <- mapper (lhs, expr) (lhs', expr') <- mapper (lhs, expr)
@ -1101,8 +1098,8 @@ traverseScopesM declMapper moduleItemMapper stmtMapper =
fullModuleItemMapper fullModuleItemMapper
where where
nestedStmtMapper stmt = nestedStmtMapper =
stmtMapper stmt >>= traverseSinglyNestedStmtsM fullStmtMapper stmtMapper >=> traverseSinglyNestedStmtsM fullStmtMapper
fullStmtMapper (Block kw name decls stmts) = do fullStmtMapper (Block kw name decls stmts) = do
prevState <- get prevState <- get
decls' <- mapM declMapper decls decls' <- mapM declMapper decls