Re: Classes fail in baffling manner
- To: mathgroup at smc.vnet.net
- Subject: [mg20358] Re: [mg20355] Classes fail in baffling manner
- From: "Andrzej Kozlowski" <andrzej at tuins.ac.jp>
- Date: Sun, 17 Oct 1999 03:01:46 -0400
- Sender: owner-wri-mathgroup at wolfram.com
There is something wrong either with the package you are using or with the way you have loaded it. Here is what happens when I try it (I am using the package Classes.m which comes with Roman Maeder's book Mathematica Programmer II). This is version 1.2 of the package, revised in 1996. In[1]:= << MathProg`Classes` In[2]:= ?Class "Class[class, superclass, variables, methods] defines a new class as a \ subclass of superclass. Class[object] gives the class of an object." In[3]:= Class[ Stimulus, Object, {mXStart, mYStart}, { {new, (new[super]; mXStart = #1; mYStart = #2) &}, {balance, mXStart &}, {deposit, Function[mXStart += #1]}, {withdraw, Function[mXStart -= #1]}, {mYStarter, mYStart &} } ] Out[3]= Stimulus In[4]:= a1 = new[Stimulus, 100, "Roman E. Maeder"] Out[4]= -Stimulus- In[5]:= balance[a1] Out[5]= 100 As you can see everything work as it should. It is very difficult to speculate about what might be going wrong in your case without more information. What you should do is start a fresh session, load in the Classes package, try again defining your Stimulus class and if it does not work again evaluate Contexts[] and $Packages. It might perhaps then be possible to understand what is going on. -- Andrzej Kozlowski Toyama International University JAPAN http://sigma.tuins.ac.jp http://eri2.tuins.ac.jp ---------- >From: Joe Strout <joe at strout.net> To: mathgroup at smc.vnet.net >To: mathgroup at smc.vnet.net >Subject: [mg20358] [mg20355] Classes fail in baffling manner >Date: Sat, Oct 16, 1999, 13:47 > > I am completely stumped. This is the most bizzare result I've gotten > trying to learn a new language in a long time -- it's almost making me > start to like Lisp! > > I'm trying to define a class. It kept working once, then failing the > next time in odd ways, so I started with the Accounts.nb, and very > gradually began to simply rename things in order to make it look more > like my example. I got this far: > > Classes`Class[ Stimulus, Object, > {mXStart, mYStart}, > { > {new, (new[super]; mXStart = #1; mYStart = #2)&}, > {balance, mXStart&}, > {deposit, Function[mXStart += #1]}, > {withdraw, Function[mXStart -= #1]}, > {mYStarter, mYStart&} > } > ] > > Where I've renamed "bal" to "mXStart" (that worked), and then replaced > "Account" with "Stimulus" -- which doesn't work. It accepts the > definition, but as soon as I try to create an object, I get: > > a1 = new[Stimulus, 100, "Roman E. Maeder"] > Take::"take": "Cannot take positions -6 through -1 in Hold[ > mXStart$67, mYStart$67." > > I haven't been able to guess what this might mean. But it clearly > didn't work, because when I try to call a method, I get results like: > > (input) balance[a1] > (output) mXStart$64 > > If I replace "Stimulus" with "Account" again, it all works again. I've > tried doing Remove["Stimulus"] and Remove["Classes`Stimulus"] to ensure > that this isn't messing things up, but this same weird behavior occurs > every time. > > Somebody please give me a clue! I am about ready to chuck Mathematica > out the window. > > Clueless, > -- Joe > > -- > ,------------------------------------------------------------------. > | Joseph J. Strout Biocomputing -- The Salk Institute | > | joe at strout.net http://www.strout.net | > `------------------------------------------------------------------' > Check out the Mac Web Directory! http://www.strout.net/macweb.cgi >