Re: MathOO: Adding Object Orientation to Mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg113681] Re: MathOO: Adding Object Orientation to Mathematica
- From: "ph.tchaa at gmail.com" <ph.tchaa at gmail.com>
- Date: Sun, 7 Nov 2010 05:12:43 -0500 (EST)
- References: <ib38rs$f0j$1@smc.vnet.net>
On 11=E6=9C=886=E6=97=A5, =E4=B8=8B=E5=8D=885=E6=99=8258=E5=88=86, "ph.tc..= . at gmail.com" <ph.tc... at gmail.com> wrote: > I have written a Mathematica package: MathOO, which adds object > orientation capability to Mathematica. It is currently in beta > version, 1.0b. It allows you to use syntax very similar to Python, > which is very easy to use. > > http://www.voofie.com/content/169/mathoo-adding-python-style-object-o... > > Please read the above link for more information. > > You may discuss about it usinghttp://www.voofie.com/concept/MathOO/ > in Voofie as well. Thank you. In developing the MathOO package: http://www.voofie.com/concept/MathOO/, I encountered a problem with Mathematica. The problem is, I would like to have garbage collector, so that user don't have to explicitly deleting the object after using it. For instance: NewClass[Object1] Object1.$init$[self_]:= Return[]; In the above two lines, I just defined Object1 to be a new class, and the constructor to be an empty function. If you are familiar with Python, you should see the similarity with __init__(). To instantiate an Object1, I do: object1 = new[Object1][] The output is: Out: object$13 Here, object$13 is an temporary variable. What I want is, when there are no references to this temporary variable, it should be deleted automatically. But it doesn't work as expected. I have identified the problem to be the following: In: y = Module[{x}, x[1] = 2; x] Out: x$117 In: FullDefinition[y] Out: y = x$117 Attributes[x$117] = {Temporary} x$117[1] = 2 Since y holds a reference of x$117, so x$117 is not removed yet. Now let's delete the reference by setting the value of y to 1: In: y = 1; However, x$117 is still here: In: Definition[x$117] Out: Attributes[x$117] = {Temporary} x$117[1] = 2 But I expected the variable to be removed since it is no longer referenced. From the manual of Mathematica, it said: Temporary symbols are removed if they are no longer referenced: So, is it a bug of Mathematica? Or is there any workaround methods? I am using Mathematica 7.0. Thank you very much.