# Functions

Wipple is what's called a functional programming language. That means functions are used everywhere in Wipple code!

You probably remember from math that a function f(x) = 3x takes an input (x) and returns an output (3x). It works the same way in Wipple! You just write it a little differently:

``````f : x -> 3 * x
``````

The arrow is pronounced "becomes", so the code above is read as "f is when x becomes 3 times x". The process of x becoming 3 times x is a function!

Let's create a function to add two numbers, `a` and `b`:

``````add : a -> b -> a + b
``````

Notice that functions only accept a single input. If you want multiple inputs, you need multiple functions (arrows)! The above code can be rewritten like so:

``````add : a -> (b -> a + b)
``````

Now how do we use functions? It's simple — just write the name of the function, followed by its inputs:

``````add 1 2
``````

And of course, we need to `show` the answer! (Guess what, `show` is a function too!)

``````show (add 1 2)
``````

If you're familiar with programming already, you might ask what happens if we only provide a single input. In Wipple, you just get back the inner function!

``````add 1
``````

Here, `a` is 1. What's `b`? We give `b` a value next:

``````(add 1) 2
``````

Notice this is the same code as before — `add 1 2`! Now for the super cool part — we can give `add 1` a name, and use it as its own function:

``````increment : add 1
show (increment 42)
``````

You should see `43` on the screen!

If you're confused, try hovering over parts of the program, and the playground will tell you what kind of code you're hovering over. For example, hovering over `increment` will show `increment :: Number -> Number`, indicating that it accepts a number and returns a number. Hovering will be explained in more detail in the next section!