### 6.18.6 Definir une fonction avec l’historique : as_function_of

Si on a affecté une valeur à la variable a et si on définit ensuite, dans une autre ligne d’entrée, la variable b, à partir de a, on utilise c:=as_function_of(b,a) pour définir une fonction c vérifiant : c(a)=b.
On tape :

a:=sin(x)

On obtient :

sin(x)

On tape :

b:=sqrt(1+a`^`2)

On obtient :

b:=sqrt(1+sin(x)`^`2)

On tape :

c:=as_function_of(b,a)
c(x)

On obtient :

sqrt(1+x`^`2)

On tape :

a:=2
b:=1+a`^`2

On obtient :

b:=5

On tape :

c:=as_function_of(b,a)

On obtient :

(a)->
{ local NULL;
return(sqrt(1+a`^`2));
}

On tape :

c(x)

On obtient :

1+x`^`2

Attention
Si la variable b a été affectée plusieurs fois c’est la première affectation de b après la dernière affectation de a qui compte.
On tape par exemple :
a:=2 puis
b:=2*a+1 puis
b:=3*a+2 puis
c:=as_function_of(b,a)
On obtient :

(a)-> {local NULL; return(2*a+1);}

c’est à dire que c(x) vaut 2*x+1.
Mais si on tape par exemple :
a:=2 puis
b:=2*a+1 puis
a:=2 puis
b:=3*a+2 puis
c:=as_function_of(b,a)
On obtient :

(a)-> {local NULL; return(3*a+2);}

c’est à dire que c(x) vaut 3*x+2.
Il est donc préférable de valider la ligne ou se trouve a avant de définir le b qui convient.