From: simonpj@microsoft.com Date: Fri, 21 Aug 2009 09:52:51 +0000 (+0000) Subject: Fix Trac #3437: strictness of specialised functions X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=ef5376d5fa26d37c828a9c88dde3cf6f92f273ab;hp=ef5376d5fa26d37c828a9c88dde3cf6f92f273ab;p=ghc-hetmet.git Fix Trac #3437: strictness of specialised functions 'lilac' helpful pin-pointed a space leak that was due to a specialised function being insufficiently strict. Here's the new comment in SpecConstr: Note [Transfer strictness] ~~~~~~~~~~~~~~~~~~~~~~~~~~ We must transfer strictness information from the original function to the specialised one. Suppose, for example f has strictness SS and a RULE f (a:as) b = f_spec a as b Now we want f_spec to have strictess LLS, otherwise we'll use call-by-need when calling f_spec instead of call-by-value. And that can result in unbounded worsening in space (cf the classic foldl vs foldl') See Trac #3437 for a good example. The function calcSpecStrictness performs the calculation. ---