Just for larks, here is a side by side of the various compilers core for the example on that page:
Haskell: > module FibMain where > > main xs = pam daeh xs > > daeh (x:xs) = x > > pam f [] = [] > pam f (x:xs) = f x : pam f xs Yhc: > FibMain.pam v220 v221 = > case v221 of > Prelude.[] -> (Prelude.[]) > Prelude.: v222 v223 -> > (Prelude.: (YHC.Internal._apply1 v220 v222) (FibMain.pam v220 > v223)) > > FibMain.daeh v224 = > case v224 of > Prelude.: v225 v226 -> v225 > _ -> (Prelude.error (LAMBDA228)) > > LAMBDA228 = > (prim_STRING "FibMain: Pattern match failure in function at 7:1-7:15.") > > FibMain.main v227 = (FibMain.pam FibMain.daeh v227) Jhc: (unicodey!) > FibMain.main = ΛFibMain.v22.λFibMain.1_xs∷[[FibMain.v22]].(let > x9282∷[FibMain.v22] → FibMain.v22 = λx9284∷[FibMain.v22].(case x9284 > of > (x9286∷FibMain.v22):(x9288∷[FibMain.v22]) → x9286; > Prelude.[] → > <⊥:test/fibmain.hs:5:13: Unmatched pattern∷FibMain.v22>;); > x9280∷⋆ = [FibMain.v22]; > in FibMain.pam x9280 FibMain.v22 x9282 FibMain.1_xs) > FibMain.pam = ΛFibMain.v5.ΛFibMain.v10.λx9296∷FibMain.v5 → > FibMain.v10.λx9298∷[FibMain.v5].(case x9298 of > (x9300∷FibMain.v5):(x9302∷[FibMain.v5]) → let x9316∷[FibMain.v10] = > FibMain.pam > FibMain.v5 FibMain.v10 x9296 x9302; > x9314∷FibMain.v10 = > x9296 x9300; > in x9314:x9316; > Prelude.[] → "";) > FibMain.daeh = ΛFibMain.v15.λx9284∷[FibMain.v15].(case x9284 of > (x9286∷FibMain.v15):(x9288∷[FibMain.v15]) → x9286; > Prelude.[] → > <⊥:test/fibmain.hs:5:13: Unmatched pattern∷FibMain.v15>;) ghc: > daeh :: %forall a . [] a -> a = > \ @ a (ds::[] a) -> > %case (a) ds %of (wild::[] a) > {[] -> > GHC.Err.patError @ a > ("test/fibmain.hs:5:0-14|function daeh"::Addr#); > : (x::a) (xs::[] a) -> > x}; > pam :: %forall a a1 . (a -> a1) -> > [] a -> [] a1 = > \ @ a @ a1 -> > %let %rec > {pam1 :: (a -> a1) -> [] a -> [] a1 = > \ (f::a -> a1) (ds::[] a) -> > %case (([] a1)) ds %of (wild::[] a) > {[] -> > [] @ a1; > : (x::a) (xs::[] a) -> > : @ a1 (f x) (pam1 f xs)}} > %in pam1; > main :: %forall a . [] ([] a) -> > [] a = > \ @ a (xs::[] ([] a)) -> > FibMain.pam @ ([] a) @ a (FibMain.daeh @ a) xs; I don't think a common compiler level core is forthcoming :) John -- John Meacham - ⑆repetae.net⑆john⑈ _______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://haskell.org/mailman/listinfo/haskell-prime