I am currently reading this book because it has challenges I can practice with .

In section 3.6 it states that for the add’ function defined as below

```
add' :: Int -> (Int -> Int)
add' x y = x + y
```

“More precisely, add takes an integer x **and returns a function**, which in

turn takes an integer y and returns the result x + y.”

I am confused on the returns a function part.

Breaking this down

I have add’ which is a function that takes one argument **x**

When we call it with x it returns another function

Does the function that get return = x + y ?

I guess what is weird to me is that in the code x and y are both supplied to add’ even though when we declared its type we only said it takes on Int.

I’m sure I am overthinking this.

Thanks in advance.