GeeksforGeeks App
Open App
Browser
Continue

# Returning Values Functions in LISP

In the previous article on the LISP function, we have seen the syntax of defining a function and calling the function by passing some arguments.

### Returning values from a function:

In LISP, whatever is the last expression in the body of a function becomes the return value of that function.

Example: Let’s create a function that takes the input parameter of a number and doubles its value.

## Lisp

 `(``defun` `double``-``the``-``number (n)``    ``( ``*` `n ``2``)``)`` ` `; Making function calls : ``(write (double``-``the``-``number ``5``))``(terpri)    ;Linebreak``(write (double``-``the``-``number ``10``))``(terpri)``(write (double``-``the``-``number ``20``))``(terpri)`

In this function body, our last expression is:

`( * n 2)`

Hence this function will return the value of this expression when it is called

Output :

```10
20
40```

But sometimes we may need to break the condition statements or return the values from the middle of a function in this case the RETURN-FROM special operator is used.

The syntax for using RETURN-FROM:

`(return-from place value)`

Here, the place is the block of code from which we have to return the specific value, for example, the place would be the name of the current function

Example: In the above LISP code, let’s put a condition where if the number is greater than 10, the function will return the value by doubling the number 10 instead of doubling the original number

## Lisp

 `(``defun` `double``-``the``-``number (n)``    ``(``if` `(> n ``10``)``        ``(return``-``from double``-``the``-``number (``*` `2` `10``)))``    ``( ``*` `n ``2``)``)`` ` ` ` `;; Calling the function``(write (double``-``the``-``number ``5``))``(terpri)        ;Linebreak``(write (double``-``the``-``number ``10``))``(terpri)``(write (double``-``the``-``number ``20``))``(terpri)`

Here, you can see that in the third function call we have passed the value of 20, but due to our condition, it will double the max value(10), hence with the help of the return-from operator we were able to return the value from a function immediately.

Output :

```10
20
20```

My Personal Notes arrow_drop_up