Interpreting the strictness annotations output by ghc --show-iface

John Meacham john at repetae.net
Thu Mar 8 00:26:32 CET 2012


L = lazy
S = strict
A = absent

f :: Int -> (Char,Char) -> Int -> Char

LS(S,L)A

means that it is lazy in the first int, strict in the tuple, strict in
the first argument of the tuple but lazy in the second and the third
argument is not used at all. I have a paper that describes it
somewhere. I modeled the jhc strictness analyzer after the ghc one
(with minor hindsight improvements) so pored over the ghc one for
quite a while once upon a time.

    John

On Wed, Mar 7, 2012 at 3:21 PM, Johan Tibell <johan.tibell at gmail.com> wrote:
> Hi,
>
> If someone could clearly specify the exact interpretation of these
> LLSL(ULL) strictness/demand annotations shown by ghc --show-iface I'd
> like to try to write a little tool that highlights the function
> argument binding in an IDE (e.g. Emacs) with this information. Anyone
> care to explain the syntax?
>
> Cheers,
> Johan
>
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users



More information about the Glasgow-haskell-users mailing list