La première question a se poser est: pourquoi utiliser 'ev' (la fonction-poubelle de Maxima)?  En général, c'est plus simple et plus clair d'utiliser 'subst'.

Ceci dit, ça n'aide pas si effectivement vous voulez évaluer les valeurs de fonctions que vous avez définies.

Qu'est-ce que vous voulez faire avec votre fonction?  L'exemple de 'patate' ne montre pas la motivation et le contexte du problème...

              -s

2010/6/1 Samuel Amo <samuel.amo@gmail.com>
Merci beaucoup pour votre réponse.
En effet je ne suis pas habitué à manipuler les portées dynamiques.
Je viens de comprendre que, lorsque je rentre les lignes

patate(x,y):=ev(args(__)[2],eval)$
patate(f(x),x);

Maxima pose patate(x=f(x),y=x)
alors effectivement je comprends pourquoi il renvoie f(f(x)), avec l'effet de l'option eval qui demande deux évaluations successives...

Cela m'oblige à nommer les variables de mes fonctions avec des noms compliqués, pour être certain que je ne les rencontrerai pas plus loin dans le programme, mais cela nuit à la lisibilité du code.

N'y a-t-il pas une astuce qui permet de contourner ce problème ?

Cordialement,

Samuel Amo

2010/6/1 Stavros Macrakis <macrakis@alum.mit.edu>

A la difference de la plupart des langages modernes, Maxima utilise les portées dynamiques, non pas lexicales.

            -s

2010/6/1 Samuel Amo <samuel.amo@gmail.com>
Bonjour,

je voudrais savoir s'il est normal que lorsque je tape

patate(x,y):=ev(args(__)[2],eval)$
patate(f(x),x);
 
cela renvoie f(f(x))  ??

Je m'attendrais (et j'attendais !) que cela me renvoie x, ou son évaluation.
(Mais en l'occurence x ne contenait aucune valeur ni fonction.)

Par contre le probleme semble disparaitre si je tape

patate(u,y):=ev(args(__)[2],eval)$
patate(f(x),x);

(cela renvoie bien x)

N'est-ce pas révélateur d'un bug de localité de la variable ??
Il est plus probable qu'il y a quelque chose que je n'ai pas compris dans le système maxima
(je m'y suis mis il y a seulement quelques mois).
Quelqu'un pourrait-il m'éclairer ?

Cordialement,

Samuel Amo

------------------------------------------------------------------------------


_______________________________________________
Maxima-lang-fr mailing list
Maxima-lang-fr@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/maxima-lang-fr