RE: Understanding strictness of ghc output

On 22 June 2004 13:30, Adrian Hey wrote:
I'm trying to figure out how you tell if ghc has correctly infered strictness or whether or not a little more prompting from me is needed.
I tried compiling with -ddump-simpl, and I guess from looking at this the DmdType bit is what I want (maybe). So if I have "DmdType LS" for a function of arity 2, does this mean the function is lazy in the first argument and strict in the second?
I would be pretty confident that this was the correct interpretation, but this is the Haskell code (from AVL library)..
height :: AVL e -> Int height = addHeight 0 where addHeight h E = h addHeight h (N l _ _) = addHeight h+2 l addHeight h (Z l _ _) = addHeight h+1 l addHeight h (P _ _ r) = addHeight h+2 r
It seems pretty obvious to me that addHeight is strict in its first argument if + is strict for Ints (as I guess it is). But this gives "DmdType LS".
Could you post the actual Core? I agree that addHeight looks strict in its first argument. Cheers, Simon
participants (1)
-
Simon Marlow