igloo: > On Wed, Mar 19, 2008 at 05:31:08PM +0000, Ian Lynagh wrote: > > On Tue, Mar 18, 2008 at 04:12:35PM -0000, GHC wrote: > > > > > > (don't worry, this often catches me out too. Perhaps a strict let > > > should be indicated more explicitly in `-ddump-simpl`). > > > > I'd certainly find it useful if it was clearer. > > In fact, simpl hides more than I'd realised. With these definitions: > > f :: Integer -> Integer -> Integer -> Integer > f x y z | y == 1 = x * z > | otherwise = f (x * x) y (z * z) > > g :: Integer -> Integer -> Integer -> Integer > g x y z | y == 1 = x > | otherwise = g (x * x) y (z * z) > > simpl shows > > B.f (GHC.Num.timesInteger x_a5B x_a5B) y_a5D > (GHC.Num.timesInteger z_a5F z_a5F); > > and > > B.g (GHC.Num.timesInteger x_a74 x_a74) y_a76 > (GHC.Num.timesInteger z_a78 z_a78); > > for the recursive calls, although in the STG you can see that the > multiplication of z is done strictly in f but not g (which is correct, > as g is not strict in z). > > So perhaps the solution is just that I should look at the STG rather > than the simpl when I want to see what's going on. > > > Thanks
We really need an official and blessed view of the optimised core, with full, relevant information, in human readable form. Just simplifiying the obvious qualified names would be a start, and some simple alpha renaming. -- Don _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users