On Fri, 14 Feb 2003, John Meacham wrote:
This seems to be contrary to how i thought haskell was implemented in ghc (and probably other systems). I was under the impression that thunks in ghc were opaque except for the code address at the begining of them. in order to evaluate something you just jump to the address stored in it.
so i guess my question is, when seq'ing a function, how does one keep it from trying to pull an argument off the stack (and evaluating it if the function is strict)? are there multiple entry points for thunks, one which means 'evaluate to WHNF' and another which actually returns the result?
What difference is there between "evaluate to WHNF" and "return a result"?
if so, how is this information passed to polymorphic functions which call seq. it seems that you would have to do something different for abstractions and boxed values.. John
-- Dean