The pattern-match compiler in the desugarer removes some dead code. Are you saying "where in GHC's source code does this happen"? If so you might want to look at DsMatchResult in module DsMonad, and in particular the CanItFail flag.
Why are you look at this, as a matter of interest? Simon | -----Original Message----- | From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] | On Behalf Of Luca Torella | Sent: 26 September 2007 22:07 | To: [email protected] | Subject: point where ghc remove unuseful function | | Hi all. | | I'm trying to find the point where GHC removes the function that | couldn't be executed. For example if I declare a function like: | | f x = 3 | f x = 5 | | I know that f x = 5 can0t be executed ever. The desugarer removes it, | just look the output after the desugaring phase: | | Rec { | Main.f :: forall t_aOL t_aOM. (GHC.Num.Num t_aOM) => t_aOL -> t_aOM | [Exported] | [] | Main.f = | \ (@ t_aOL) (@ t_aOM) ($dNum_aOT :: {GHC.Num.Num t_aOM}) -> | __letrec { | f_aOQ :: t_aOL -> t_aOM | [] | f_aOQ = \ (x_aOF :: t_aOL) -> lit_aON; | fromInteger_aP3 :: GHC.Num.Integer -> t_aOM | [] | fromInteger_aP3 = fromInteger_aOR; | lit_aON :: t_aOM | [] | lit_aON = fromInteger_aP3 (GHC.Num.S# 3); | fromInteger_aOR :: GHC.Num.Integer -> t_aOM | [] | fromInteger_aOR = GHC.Num.fromInteger @ t_aOM $dNum_aOT; | lit_aOP :: t_aOM | [] | lit_aOP = fromInteger_aOR (GHC.Num.S# 5); | } in f_aOQ | end Rec } | | after the desugarer the second function has been removed as you can | see. | | But where is the actual point where it does this operation? I thought | was some function in the Check.lhs file, but putting a lot of trace I | discovered this isn't the point. Someone could help me, pointing the | right function which does it? | | | thanks in advance, | Luca. | | _______________________________________________ | Cvs-ghc mailing list | [email protected] | http://www.haskell.org/mailman/listinfo/cvs-ghc _______________________________________________ Cvs-ghc mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-ghc
