Una función es un conjunto de declaraciones que toma alguna entrada, realiza algunas tareas y produce el resultado. A través de funciones, podemos dividir una gran tarea en muchas funciones más pequeñas. También ayudan a evitar la repetición de código, ya que podemos llamar a la misma función para diferentes entradas.
Definición de funciones en LISP:
Las funciones en LISP se definen usando la macro DEFUN . La sintaxis básica se ve así:
(defun function-name (parameters) "Documentation string" body-of-function )
- Nombre de la función: puede usar cualquier tipo de símbolo como nombre de función, pero generalmente los nombres de función incluyen solo caracteres y guiones. En LISP, en lugar de utilizar guiones bajos en la denominación, los guiones se consideran convenciones de nomenclatura. Por ejemplo, escribimos calc-average en lugar de calc_average o calcAverage .
- Parámetros: estas son las variables que se utilizan para retener los argumentos que se pasan a la función cuando se llama. Estos parámetros son opcionales, si una función no tiene ningún parámetro, entonces esa lista está vacía escrita como ( )
- String de documentación: es un literal de string que se utiliza para describir lo que se pretende que haga una función en particular.
- Cuerpo de la función: El cuerpo de la función consta de expresiones LISP que se evalúan en orden cuando se llama a la función. Por lo general, el valor de la última expresión se devuelve como el valor de la función, pero con la ayuda de RETURN-FORM, que es un operador especial, podemos devolver el valor de la función desde cualquier parte de ella.
Ejemplo:
1. Vamos a crear una función llamada hello-world que no tome ningún parámetro y devuelva una string hello world.
Lisp
(defun hello-world () (format t "Hello, World!") ) (hello-world)
Producción:
Hello, World!
2. Función para sumar dos enteros
Aquí hemos creado una función llamada add-two-number que toma dos argumentos n1 y n2 . Se utiliza una string de documentación para describir el trabajo realizado por esta función y cualquiera que sea el valor devuelto llamando al + eventualmente se convierte en el valor devuelto de sumar dos números.
Lisp
(defun add-two-number (n1 n2) "Adds two numbers" (+ n1 n2) ) (write(add-two-number 10 20))
Producción:
30
3. Ahora vamos a crear una función simple que tome un argumento de string opcional y devuelva la string de bienvenida:
En la función welcome-to-gfg , tenemos un nombre de parámetro opcional. Para definir cualquier parámetro opcional agregue el símbolo: &opcional antes del nombre del parámetro que es opcional.
Hemos establecido su valor predeterminado en Sandeep , por lo que si el usuario llama a la función bienvenido a gfg sin ningún argumento, imprime «Bienvenido «Sandeep» a Geeks for geeks». o si se pasa algún argumento al llamar a la función, devolverá la string que contiene el valor del argumento pasado al llamar a la función.
(terpri) se utiliza para imprimir una nueva línea
Lisp
(defun welcome-to-gfg (&optional (name "Sandeep")) (format t "Welcome ~S to Geeks for geeks!" name) ) (welcome-to-gfg) (terpri) (welcome-to-gfg "UserName")
Producción:
Welcome "Sandeep" to Geeks for geeks! Welcome "UserName" to Geeks for geeks!
Publicación traducida automáticamente
Artículo escrito por aniruddhashriwant y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA