Dear Gap Forum and Mathieu,

On Jul 16, 2007, at 08:34 , Mathieu Dutour wrote:

Dear Gap forum,
see below a program that creates a strange error.
---------------------------------------------
n:=4;
for i in [1..n]
do
  eMat:=4;
  H:=List([1..n], x->x*i*eMat);
od;
---------------------------------------------
running it with "gap.sh TheProg" produce the following message:
.
.
Syntax error: warning: unbound global variable in BugSearch line 5
  H:=List([1..n], x->x*i*eMat);
                             ^

Why is it so?

The manual seems silent on the subject, but after a bit of fiddling, I will guess that it's a funny sort of scoping problem. Although scoping seems to be limited to "global" and "local (function)", it might be that there is block scoping as well. Since you are introducing 'eMat' within the "scope" of the for loop, perhaps the variable name 'eMat' does not actually become known until the loop is (textually) complete.

Certainly, if you assign to 'eMat' prior to typing in the above loop, it works without a problem.

I'll be interested in the real explanation, since I'm no expert in the Gap language.

Justin

--
Justin C. Walker, Curmudgeon-At-Large
Institute for the Enhancement of the Director's Income
--------
Experience is what you get
  when you don't get what you want.
--------



_______________________________________________
Forum mailing list
[email protected]
http://mail.gap-system.org/mailman/listinfo/forum

Reply via email to