subst() - substitut() 2.0☐ nouvelle fonctionnalité intéressante
☐ pourrait aider de nombreux utilisateurs !
☑ supprime quelque chose qui ressemble à un « bug »
☑ agréable à avoir
☐ personne n'en a besoin
Qu'est-ce qui a inspiré cette demande de liste de souhaits ?
Substitute est une fonction très puissante pour la gestion des expressions :
Utilisation de JSL pour développer des applications efficaces et robustes (UE 2018 415)
Un gros inconvénient de Substitute : il évalue ses arguments 
Par conséquent, les expressions avec Substitute() deviennent assez longues et difficiles à lire. En outre, un nouveau scripteur JSL doit apprendre la syntaxe correcte - personne ne s'attend à ce que toutes ces Expr() soient nécessaires.
Exemple:
Substitute( Expr( a + Sqrt( a ) ), Expr( a ), Expr( b ) )
Quelle amélioration souhaiteriez-vous voir ?
Une nouvelle fonction subst() qui n'évalue pas ses arguments. On peut alors écrire :
Substitute( a + Sqrt( a ), a, b )
Pourquoi cette idée est-elle importante ?
Subst() et Eval(Subst()) seront utilisés des millions de fois - et à chaque fois, un scripteur JSL sera heureux que vous les ayez implémentés !
autres souhaits de 
Automatisation et scriptsRe : subst() - substitut() 2.0Dans la plupart des cas, l'utilisateur fournira au moins un des arguments comme nom - avec l'idée que JMP recherche le nom et utilise Name Expr au lieu du nom lui-même.
Ainsi, JMP doit évaluer les arguments à un niveau (rechercher, prendre le nom Expr si disponible, ne pas évaluer davantage) où il est possible d'écrire :
a=Expr(myExpr);
Subst(x+y, x, a) // result: myExpr + y
</CODE>instead of </P><PRE><CODE class=" language-jsl">a=Expr(myExpr);
Substitute(Expr(x+y), Expr(x), Name Expr(a)) // result: myExpr + y
.
Et si un utilisateur veut être sûr que JMP utilise l'argument tel quel (sans résoudre le Name Expr .), il peut écrire :
a=Expr(myExpr);
Subst(x+y, x, Expr(a)) // result: a + y
Re : subst() - substitut() 2.0Avec d'autres mots :
Subst()
... un Substitute() avec la magie/facilité d' Extract Expr()
clear symbols();
// direct mode, no Expr necessary
Extract Expr(x + y, x);// -> x
Extract Expr(x^2 + y, c);// no c in x^2 + y -> empty
// Name Expr mode
c=Expr(x^2);
Extract Expr(x^2 + y , c);// looks up c = x^2, find "x^2"" in x^2 +y
malheureusement, ce qui ne marche pas (aussi simple que je le souhaiterais) :
c=Expr(x^2);
Extract Expr(c * d, Expr(c))
Extraire l'expression
Re: subst() - substitute() 2.0 - Statut changé en : ReconnuMerci pour la suggestion @hogi .