On 18 Jan 2005, at 06:31, Jim Apple wrote:
Tomasz Zielonka wrote:
I like to think that pure functions don't change between executions.
I'd like to think they wouldn't change within executions. Is there a pure haskell way to check the value of a function between exections?
In principle, a haskell compiler might notice that a function is always called with a particular argument, and inline the result of the function at compile-time. For example, you might well expect a program containing the subterm "3+4" to be compiled into machine code which directly uses the constant value 7. Certainly most decent C compilers will perform this optimisation. Such an optimisation, depends on the knowledge that "3+4" is always the same value: i.e. that a pure function, given the same arguments, always returns the same value (even between executions). More sophisticated optimisation transforms might also depend on the same property. Whether GHC actually performs an optimisation along these lines I have no idea. Jules