variables libres, variables locales
Publié : mer. nov. 23, 2011 1:39 pm
Bonjour,
Pour motiver ma question je me permets de presenter d'abord un petit exemple.
Voici une procedure qui etant donnee une liste L de nombres reels retourne la liste de coeffs
d'un polynome ayant pour les racines les elements de L:
rcf(L):={
local k,p;
p:=1;
for k in L do
p:=p*(x-k); // x est ici une variable gobale
end do;
return coeff(p);
}:;
Bien evidemment, pour que ca marche il faut que x soit une variable libre (et ca marche bien).
OK.
Mais si on declare x comme local dans la procedure (local k,p,x;) le polynome p vaut juste une constante (=le dernier coeff du polynome renvoye par la version "globale")
Apparemment x "local" se comporte differemment. Est-ce volontaire? Si oui, quel est le "principe" pour des variables locales "libres"? (on est encore en 0.9.4)
Merci par avance.
Pour motiver ma question je me permets de presenter d'abord un petit exemple.
Voici une procedure qui etant donnee une liste L de nombres reels retourne la liste de coeffs
d'un polynome ayant pour les racines les elements de L:
rcf(L):={
local k,p;
p:=1;
for k in L do
p:=p*(x-k); // x est ici une variable gobale
end do;
return coeff(p);
}:;
Bien evidemment, pour que ca marche il faut que x soit une variable libre (et ca marche bien).
OK.
Mais si on declare x comme local dans la procedure (local k,p,x;) le polynome p vaut juste une constante (=le dernier coeff du polynome renvoye par la version "globale")
Apparemment x "local" se comporte differemment. Est-ce volontaire? Si oui, quel est le "principe" pour des variables locales "libres"? (on est encore en 0.9.4)
Merci par avance.