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 <[email protected]>

> A la difference de la plupart des langages modernes, Maxima utilise les
> portées dynamiques, non pas lexicales.
>
>             -s
>
> 2010/6/1 Samuel Amo <[email protected]>
>
>> 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
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/maxima-lang-fr
>>
>>
>
------------------------------------------------------------------------------

_______________________________________________
Maxima-lang-fr mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/maxima-lang-fr

Répondre à