Using Get in a Module
- To: mathgroup at smc.vnet.net
- Subject: [mg64207] Using Get in a Module
- From: "Stu Schaffner" <arglebargle at rcn.com>
- Date: Mon, 6 Feb 2006 02:49:06 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
I am returning to Mathematica 5.2 after a hiatus, and have a few questions.
I have text files that contain valid Mathematica assignments, such as
x = {1,2,3};
There are several assignments in a single file, as the files are data dumps
from a larger system. If a top-level notebook contains
<<"filename.txt"
everything is fine. However,
fn = path<>"filename"<>".txt";
<<fn
does not work. It can be fixed by putting parentheses around the fn
variable: <<(fn). I presume this forces evaluation of fn, so << sees a
String instead of a Symbol whose downvalue is a String. I can live with
this, but wonder why it is necessary.
Next, I made a function and added it to a package. The function now
contained the << operator:
BeginPackage["apackage`"];
fun::usage = ...
Begin["Private`"];
fun[args]:=Module[{},(...;<<(fn);...)];
End...EndPackage...
The package notebook compiled with no errors, but when I did a Needs on the
resulting .m file, I got a syntax error on the <<. (I notice that the error
message still gives false line numbers.) I made this go away by replacing
<< with Get. This looks like a bug but, again, I can live with it. However
the module does not seem to be able to access the symbols defined by the
assignment statements. After the Get is processed, the new symbols appear
in Global context of the top-level notebook, but are not visible to the
package function that contained the Get. I played a bit with defining local
symbols with the same name and by using Global`x in the package function,
but none of this helped. It appears that Mathematica has preprocessed the
module enough that it can't cope with dynamic changes to the namespace. Is
this a feature or a bug? Is there a workaround?
Stu Schaffner
my real address is my nickname followed by the first three letters of my
last name (all one word) at rcn.com