1 Break the loop between Match and DsUtils and the loops
2 between DsExpr/DsBinds and various things.
7 import CoreSyn ( CoreBinding(..), CoreExpr(..) )
8 import DsMonad ( DsM(..) )
9 import DsBinds ( dsBinds )
10 import DsExpr ( dsExpr )
11 import DsUtils ( EquationInfo, MatchResult )
12 import FastString ( FastString )
14 import Match ( match, matchSimply )
15 import PreludeStdIO ( Maybe )
16 import TcHsSyn ( TypecheckedHsBinds(..), TypecheckedHsExpr(..), TypecheckedPat(..) )
17 import Type ( Type(..) )
18 match :: [Id] -- Variables rep'ing the exprs we're matching with
19 -> [EquationInfo] -- Info about patterns, etc. (type synonym below)
20 -> [EquationInfo] -- Potentially shadowing equations above this one
21 -> DsM MatchResult -- Desugared result!
23 matchSimply :: CoreExpr -- Scrutinee
24 -> TypecheckedPat -- Pattern it should match
25 -> Type -- Type of result
26 -> CoreExpr -- Return this if it matches
27 -> CoreExpr -- Return this if it does
30 dsBinds :: Bool -> TypecheckedHsBinds -> DsM [CoreBinding]
31 dsExpr :: TypecheckedHsExpr -> DsM CoreExpr