> Is there any references to memoization techniques? I could not find
> any reference to memoization facilities in the Haskell report and
> library report. Neither in the Clean report. After looking at GHC,
> Hugs98 and nhc98, I have found that GCH provides the memo function
> used in the example. Looking at it, it does not look easily portable.
GHC's Memo library is described in the User's Guide:
http://www.haskell.org/ghc/docs/latest/users_guide/users_guide-6.html#ss6.6
This memo table implementation is primarily for applications with large (or
even infinite) keys, where determining equality is not cheap or desirable.
The memo table uses stable names, a kind of identity mechanism for objects
which provides a pointer-equality like comparision mechanism. The library
also uses weak pointers and finalization to avoid keeping stale results in
the memo table. The techniques are described in the following paper:
http://www.research.microsoft.com/~simonpj/papers/weak.ps.gz
Cheers,
Simon