### 6.17.2 Transformer une expression en une fonction : `unapply`

Pour transformer une expression en une fonction, on utilise la commande `unapply`.
`unapply` a deux arguments une expression et le nom d’une (ou des) variable(s).
`unapply` renvoie une fonction définie à partir de cette expression et de la (ou des) variable(s) donnée(s) en argument.

Attention lorsqu’on définit une fonction, le membre de droite de l’affectation n’est pas évalué, ainsi l’écriture `g:=x^2; f(x):=g` ne définit pas la fonction f: x → x2 mais la fonction f: x → g.
On tape :

`g:= sin(x+1); f:=unapply(g,x)`

On obtient :

`(sin(x+1), (x)->sin(x+1))`

On a alors la variable `g` qui contient une expression symbolique et la variable `f` qui contient une fonction.
On tape :

`unapply(exp(x+2),x)`

On obtient :

`(x)->exp(x+2)`

On tape :

`f:=unapply(lagrange([1,2,3],[4,8,12]),x)`

On obtient :

`(x)->4+4*(x-1)`

On tape :

`f:=unapply(integrate(log(t),t,1,x),x)`

On obtient :

`(x)->x*log(x)-x+1`

On tape :

`f:=unapply(integrate(log(t),t,1,x),x)`
`f(x)`

On obtient :

`x*log(x)-x+1`

Remarque Pour définir, à partir d’une fonction de 2 variables f(x,w), la fonction g qui à w fait correspondre la fonction g(w) définie par : g(w)(x)=f(x,w), on utilise aussi `unapply`.
On tape :

`f(x,w):=2*x+w`
`g(w):=unapply(f(x,w),x)`
`g(3)`

On obtient :

`x->2``·``x+3`