Perl's memoize function in C++
Perl's memoize function can be used as a cache creator to create a
lookup table for an argument(s) after the function has been called once
with a particular set of arguments.
Basically, I want to implement something like this:
int fib(int n) {
if( n <= 2 )
return 1;
else
return fib(n-1) + fib(n-2);
}
int main() {
int (*newfib)(int);
newfib = memoize(fib);
int n = 7;
std::cout << newfib(n) << std::endl;
return 0;
}
This helps to create a dynamically cached functional substitute for a
horribly inefficient original function in a single line.
The memoize function will look up a cache to see if a value is already
known for the function. If yes, then that value is returned, else it is
calculated using the function. However, my problem is : How do I
implement a memoize function which is type safe (without using varargs)
and can handle multiple arguments without writing separate functions
for 1 arg, 2 arg, multi arg functions. Can templates or functors be of
any help? Also, how can recursion be handled without messing up the
code or including additional dependencies in the original code?
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]