> But pedantically even the function:
>
>> quux :: Int -> Int
>> quux x = trace "Quux" (bar 12)
>
>> optmain :: IO ()
>> optmain = quux 10 `seq` quux 11 `seq` return ()
>
> might print only once if GHC at the optimization level selected recognizes
> that quux doesn't depend on its argument and rewr
I agree with what you meant, but not quite with what you said. To be
pedantic:
> import Debug.Trace
> foo :: Int
> foo = trace "Foo" (bar 12)
> bar :: Int -> Int
> bar x = trace "Bar" x
> main :: IO ()
> main = foo `seq` foo `seq` return ()
main prints "Foo\nBar\n" showing that the bar is only
On 14/09/2009, at 9:28 AM, Casey Hawthorne wrote:
Do I have this right? "Remembering" Memoization!
For some applications, a lot of state does not to be saved, since
"initialization" functions can be called early, and these functions
will "remember" - (memoize) their results when called again
Do I have this right? "Remembering" Memoization!
For some applications, a lot of state does not to be saved, since
"initialization" functions can be called early, and these functions
will "remember" - (memoize) their results when called again, because
of lazy evaluation?
--
Regards,
Casey
__