[Haskell-cafe] Re: extending bang proposal Re: strict Haskelldialect

Brian Hulley brianh at metamilk.com
Tue Feb 7 17:16:08 EST 2006


Ben Rudiak-Gould wrote:
> Brian Hulley wrote:
>> One motivation seems to be that in the absence of whole program
>> optimization, the strictness annotations on a function's type can
>> allow the compiler to avoid creating thunks at the call site for
>> cross-module calls whereas using seq in the function body itself
>> means that the thunk still has to be created at the call site
>> because the compiler can't possibly know that it's going to be
>> immediately evaluated by seq.
>
> GHC solves this with the worker-wrapper transformation: the code for
> the wrapper is exported as part of the module's interface and inlined
> at external call sites. It handles seq, unboxing, and so on and calls
> the worker via a private interface.
>
> Not that I think strictness information in the type system is a bad
> idea.

Sounds cool. I wonder if strictness annotations are ever really needed (eg 
if the "perfect optimizer" were possible to construct)?

One problem I see with strictness annotations in functions is that there 
could easily be an exponential growth in variants of a function (and callers 
of that function...) to handle different strictness requirements (eg for map 
with all of Clean's list types etc) leading to a bit of a minefield for the 
humble programmer... :-)

Regards, Brian. 



More information about the Haskell-Cafe mailing list