```#Functions

# Although Maple has a large library of standard functions, we often need
# to define new ones.  For example, to define a fourth order polynomial:
#
#           p(x) = 18 x^4  + 69 x^3  - 40 x^2  - 124 x - 48
# we enter the Maple code

p := x -> 18*x^4 + 69*x^3 - 40*x^2 - 124*x - 48;

# Think of the symbol -> as an arrow: it tells what to do with the input
# x, namely, produce the output 18*x^4 + 69*x^3 - 40*x^2 -124*x - 48. To
# understand the historical origins of this notation, read about lambda
# functions, a subject of interest to computer science areas. Once the
# function p is defined, we can do the usual computations with it, e.g.,

p(-2);
p( 1/2 );
p( a+b );
simplify(%);

# It is important to keep in mind that functions and expressions are
# different kinds of mathematical objects.  Mathematicians know this, and
# so does Maple.  Compare the results of the following:

p;    # function
p(x); # expression
p(y); # expression
p(3); # expression

# As further proof, try the following:

factor(p);
factor( p(x) );
plot( p, -2..2 );
plot( p(x), x = -2..2 ); # same result

# Functions of several variables can be defined as easily as can
# functions of a single variable:

f := (x,y) -> exp(-x) * sin(y);
f(1,2);
g := (x,y) -> alpha*exp(-k*x)*sin(w*y);
g(1,2);
alpha := 2; k := 3; g(1,2);

w := 3.5; g(1,2);
alpha := 'alpha'; g(1,2);

```