Line No. | Rev | Author | Line |
---|---|---|---|
1 | 1 | paulosilva | |
2 | {-# LANGUAGE FlexibleContexts #-} | ||
3 | {-# OPTIONS_GHC -Wall #-} | ||
4 | |||
5 | ------------------------------------------------------------------------------- | ||
6 | |||
7 | {- | | ||
8 | Module : Language.Module.Refresh | ||
9 | Description : Operations for refreshing the variable names. | ||
10 | Copyright : (c) Paulo Silva | ||
11 | License : LGPL | ||
12 | |||
13 | Maintainer : paufil@di.uminho.pt | ||
14 | Stability : experimental | ||
15 | Portability : portable | ||
16 | |||
17 | -} | ||
18 | |||
19 | ------------------------------------------------------------------------------- | ||
20 | |||
21 | module Language.Module.Refresh ( | ||
22 | refresh | ||
23 | ) where | ||
24 | |||
25 | import Control.Monad.Fresh | ||
26 | import qualified Language.Law.Refresh as L | ||
27 | import Language.Module.SyntaxADT | ||
28 | import qualified Language.R.Refresh as R | ||
29 | |||
30 | ------------------------------------------------------------------------------- | ||
31 | |||
32 | refresh :: MonadFresh [String] String m => ModuleS -> m ModuleS | ||
33 | refresh (ModuleS nm laws gcs defs) = do | ||
34 | laws' <- mapM L.refresh laws | ||
35 | gcs' <- mapM R.refresh gcs | ||
36 | defs' <- mapM R.refresh defs | ||
37 | return $ ModuleS nm laws' gcs' defs' | ||
38 | |||
39 | ------------------------------------------------------------------------------- | ||
40 |