$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] Interest check: memoization
From: vicente.botet (vicente.botet_at_[hidden])
Date: 2009-01-27 02:16:54
----- Original Message ----- 
From: "James Porter" <porterj_at_[hidden]>
To: <boost_at_[hidden]>
Sent: Monday, January 26, 2009 11:55 PM
Subject: Re: [boost] Interest check: memoization
> If you are interested in looking at the new code, I have updated source 
> available here: http://www.teamboxel.com/misc/memoizer-0.2.tar.gz . 
> There's obviously a lot of work left to do, but hopefully this will help 
> resolve some of your questions regarding function objects.
Hi,
IMO the main issue is that we need to declare a variable, and in order to share this variable we need to either use a global variable or pass it as parameter to the inner functions. What do you think about defining a singleton type avoiding the need of this variable declaration, as do Boost.Flyweith?
what about adding a _singleton variant
  typedef memoizer_singleton<doit> doit_memo;
and use directly the type doit_memo as follows
    doit_memo(5.0,7);
Or
class factorial : public recursive_memoizer_singleton<factorial,int(int)>{
public:
 int call(int n) {  if(n<=1)   return 1;  else  return n*memo(n-1); } 
};
and use
    factorial(5); // 5!
In this way memoizer will be a generalization of the Flyweith. Of course this do not precludes to provide the non_singleton versions.
Thanks,
Vicente