### 5.16.6 Define a function with the history : as_function_of

If an entry defines the variable a and if a later entry defines the variable b (supposed to be dependent on a), then c:=as_function_of(b,a) will define a function c such that c(a)=b.
Input :

a:=sin(x)

Output :

sin(x)

Input :

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

Output :

sqrt(1+sin(x)`^`2)

Input :

c:=as_function_of(b,a)

Output :

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

Input :

c(x)

Output :

sqrt(1+x`^`2)

Input :

a:=2

Output :

2

Input :

b:=1+a`^`2

Output :

5

Input :

c:=as_function_of(b,a)

Output :

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

Input :

c(x)

Output :

1+x`^`2

Warning !!
If the variable b has been assigned several times, the first assignment of b following the last assignment of a will be used. Moreover, the order used is the order of validation of the commandlines, which may not be reflected by the Xcas interface if you reused previous commandlines.
Input for example :
a:=2 then
b:=2*a+1 then
b:=3*a+2 then
c:=as_function_of(b,a)
Output :

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

i.e. c(x) is equal to 2*x+1.
But, input :
a:=2 then
b:=2*a+1 then
a:=2 then
b:=3*a+2 then
c:=as_function_of(b,a)
Output :

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

i.e. c(x) is equal to 3*x+2.
Hence the line where a is defined must be reevaluated before the good definition of b.