Additional thunk for function

Tim Chevalier catamorphism at gmail.com
Fri Sep 21 10:29:46 EDT 2007


On 9/21/07, Victor Nazarov <asviraspossible at gmail.com> wrote:
> Here is some more details:
>
> % ghc -c -ddump-stg T1.hs
>
> ==================== STG syntax: ====================
> T1.map =
>     \u []
>         let {
>           map1_sdR =
>               \r [f_sdN ds_sdI]
>                   case ds_sdI of wild_sdU {
>                     [] -> [] [];
>                     : x_sdM xs_sdQ ->
>                         let { sat_sdT = \u [] map1_sdR f_sdN xs_sdQ; } in
>                         let { sat_sdP = \u [] f_sdN x_sdM; } in  : [sat_sdP sat_sdT];
>                   };
>         } in  map1_sdR;
> SRT(T1.map): []
>
>
> % ghc -c -ddump-stg T1.hs -O
>
> ==================== STG syntax: ====================
> T1.map =
>     \r [f_sel ds_seg]
>         case ds_seg of wild_ser {
>           [] -> [] [];
>           : x_sek xs_seo ->
>               let { sat_seq = \u [] T1.map f_sel xs_seo; } in
>               let { sat_sen = \u [] f_sel x_sek; } in  : [sat_sen sat_seq];
>         };
> SRT(T1.map): []

Sure, it makes sense that the extra thunk would be allocated when
optimization is disabled (if you don't pass in any optimization flags
like -O, it's like saying "don't do any optimization"). Don't expect
GHC to generate efficient code with optimization turned off :-)

Cheers,
Tim

-- 
Tim Chevalier * catamorphism.org * Often in error, never in doubt
"Other than to amuse himself, why should a man pretend to know where
he's going or to understand what he sees?" -- William Least Heat Moon


More information about the Glasgow-haskell-users mailing list