Re: message-driven function: more explanation
- To: mathgroup at smc.vnet.net
- Subject: [mg95751] Re: message-driven function: more explanation
- From: dh <dh at metrohm.com>
- Date: Mon, 26 Jan 2009 05:02:11 -0500 (EST)
- References: <gl9n6q$aus$1@smc.vnet.net> <glc50f$3b3$1@smc.vnet.net> <gletdh$4lp$1@smc.vnet.net>
Hello, to my knowledge, there is no 100% closed closure in Mathematica. Instead, we may "bury" names arbitrarily deep into contexts. E.g. we may bury the counter in MyContext`: f1[] := Module[{MyContext`co}, MyContext`co = 0; Function[{}, ++MyContext`co] ] Daniel Mariano Suárez-Alvarez wrote: > On Jan 23, 8:09 am, dh <d... at metrohm.com> wrote: >> Hi Bert, >> >> nothing exotic here. The return value is a function that consits of a >> >> [snip] > > Well, there is one thing which may be mildly exotic > for those not familiar with it: the function is > returned is wrapped by a closure, which is why it > is able to retain the value of the counter variable. > > (The closure is not air-tight, though: > > In[1]:= f[a_] := Module[{aa = a, ff}, > ff[i_] := (aa += i; aa); > ff > ]; > > In[2]:= q = f[0] > > Out[2]= ff$14 > > In[3]:= q[2] > > Out[3]= 2 > > In[4]:= aa$14 = 0; > > In[5]:= q[3] > > Out[5]= 3 > > Can one get a really closed closure?) > > -- m >