Understanding strictness of ghc output
Simon Marlow
simonmar at microsoft.com
Tue Jun 22 08:39:57 EDT 2004
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
More information about the Glasgow-haskell-users
mailing list