Re: math =!= mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg108595] Re: math =!= mathematica
- From: dh <dh at metrohm.com>
- Date: Thu, 25 Mar 2010 04:22:10 -0500 (EST)
- References: <hoa19m$fdk$1@smc.vnet.net> <4BA9F75F.7020908@metrohm.com> <4BAA0104.5020904@gmail.com>
Hi Ralf, in Mathematica it is usage that user identifier should always start with a lower case letter. System names always start with a capital. This prevents any conflicts. A further mean is the usage of BeginPackage, Begin, End, EndPackage, but I think you know about this. Daniel On 24.03.2010 13:09, Ralf Hemmecke wrote: > Oh, it was exactly what I wanted. Suppose, I write a big Mathematica package > with lots of new names that I export in my context. > Everything works fine for Mathematica up to version 7. Now assume in version 8 > one of my identifiers is suddenly a member of Mathematica's System` > context. > > Using Array in my proposed code was just an example of this situation. > You can even suppose that I don't want to export my identifier, i.e. my > Array would only appear in the A`Private` context. > > Of course, I don't want that the internals of my code suddenly break, > because an identifier I use in a private context is exposed from System` > and thus probably protected and not changable. > > What can I do? > > Ralf > > > On 03/24/2010 12:28 PM, dh wrote: >> Hi Ralf, >> if you say: `Array[c,3]=17 you are not calling the function "Array" that >> lives in the System context, but you create a new symbol in the context >> "A". Hardly what you want. >> Daniel >> >> >> On 23.03.2010 10:23, hemmecke wrote: >>> Does somebody know why I get different behaviour for the following >>> commands in a commandline session of mathematica 7 or inside a notebook? >>> It also seems to be different in different Mathematica versions for the >>> notebook format. >>> See http://www.risc.jku.at/people/hemmecke/mathematica/ for the >>> notebook files for Mathematica 5.2, 6.0, 7.0. >>> >>> Can someone explain the >>> >>> General::dupsym: The symbol Array with context A` already exists. >>> >>> message? Why does that message appear at all? If A`Array exists, then >>> Mathematica should just use it, shouldn't it? >>> >>> According to >>> http://reference.wolfram.com/mathematica/tutorial/Contexts.html >>> we have: >>> `name a symbol in the current context >>> So why is Mathematica complaining? >>> >>> Ralf >>> >>>> math >>> Mathematica 7.0 for Linux x86 (32-bit) >>> Copyright 1988-2008 Wolfram Research, Inc. >>> >>> In[1]:= BeginPackage["A`"] >>> >>> Out[1]= A` >>> >>> In[2]:= {$ContextPath, $Context} >>> >>> Out[2]= {{A`, System`}, A`} >>> >>> In[3]:= `Array[c,3]=17 >>> >>> Array::shdw: Symbol Array appears in multiple contexts {A`, System`} >>> ; definitions in context A` may shadow or be shadowed by other >>> definitions. >>> >>> Out[3]= 17 >>> >>> In[4]:= Array[c,3] >>> >>> Out[4]= 17 >>> >>> In[5]:= `Array[c,3] >>> >>> General::dupsym: The symbol Array with context A` already exists. >>> >>> Out[5]= Removed[Array][c, 3] >>> >>> In[6]:= A`Array[c,3] >>> >>> Out[6]= 17 >>> >> >> > > > -- Daniel Huber Metrohm AG International Headquarters Oberdorfstr. 68, CH-9101 Herisau / Switzerland Phone +41 71 353 8606, Fax +41 71 353 89 01 Mail <mailto:dh at metrohm.com> Web <http://www.metrohm.com