Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Returning Values Functions in LISP

  • Last Updated : 29 Oct, 2021

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
Recommended Articles
Page :

Start Your Coding Journey Now!