Add is_lam and is_fun predicates.
[matthijs/master-project/cλash.git] / Normalize.hs
1 --
2 -- Functions to bring a Core expression in normal form. This module provides a
3 -- top level function "normalize", and defines the actual transformation passes that
4 -- are performed.
5 --
6 module Normalize (normalize) where
7
8 -- Standard modules
9 import Debug.Trace
10 import qualified List
11 import qualified Maybe
12 import qualified Control.Monad as Monad
13
14 -- GHC API
15 import CoreSyn
16 import qualified UniqSupply
17 import qualified CoreUtils
18 import qualified Type
19 import qualified Id
20 import qualified CoreSubst
21 import Outputable ( showSDoc, ppr, nest )
22
23 -- Local imports
24 import NormalizeTypes
25 import NormalizeTools
26 import CoreTools
27
28 -- What transforms to run?
29 transforms = []
30
31 -- Normalize a core expression by running transforms until none applies
32 -- anymore. Uses a UniqSupply to generate new identifiers.
33 normalize :: UniqSupply.UniqSupply -> CoreExpr -> CoreExpr
34 normalize = dotransforms transforms
35