LISP - Funzioni

Una funzione è un gruppo di istruzioni che insieme eseguono un'attività.

Puoi suddividere il codice in funzioni separate. Come suddividere il codice tra le diverse funzioni dipende da te, ma logicamente la divisione di solito è in modo che ciascuna funzione svolga un compito specifico.

Definizione di funzioni in LISP

La macro denominata defunviene utilizzato per definire le funzioni. Ildefun la macro ha bisogno di tre argomenti:

  • Nome della funzione
  • Parametri della funzione
  • Corpo della funzione

La sintassi per defun è -

(defun name (parameter-list) "Optional documentation string." body)

Illustriamo il concetto con semplici esempi.

Esempio 1

Scriviamo una funzione chiamata averagenum che stamperà la media di quattro numeri. Invieremo questi numeri come parametri.

Crea un nuovo file di codice sorgente denominato main.lisp e digita il codice seguente.

(defun averagenum (n1 n2 n3 n4)
   (/ ( + n1 n2 n3 n4) 4)
)
(write(averagenum 10 20 30 40))

Quando esegui il codice, restituisce il seguente risultato:

25

Esempio 2

Definiamo e chiamiamo una funzione che calcola l'area di un cerchio quando il raggio del cerchio è dato come argomento.

Crea un nuovo file di codice sorgente denominato main.lisp e digita il codice seguente.

(defun area-circle(rad)
   "Calculates area of a circle with given radius"
   (terpri)
   (format t "Radius: ~5f" rad)
   (format t "~%Area: ~10f" (* 3.141592 rad rad))
)
(area-circle 10)

Quando esegui il codice, restituisce il seguente risultato:

Radius:  10.0
Area:   314.1592

Si prega di notare che -

  • È possibile fornire un elenco vuoto come parametri, il che significa che la funzione non accetta argomenti, l'elenco è vuoto, scritto come ().

  • LISP consente anche argomenti opzionali, multipli e basati su parole chiave.

  • La stringa di documentazione descrive lo scopo della funzione. È associato al nome della funzione e può essere ottenuto utilizzando ildocumentation funzione.

  • Il corpo della funzione può essere costituito da un numero qualsiasi di espressioni Lisp.

  • Il valore dell'ultima espressione nel corpo viene restituito come valore della funzione.

  • È inoltre possibile restituire un valore dalla funzione utilizzando il return-from operatore speciale.

Cerchiamo di discutere i concetti di cui sopra in breve. Fare clic sui seguenti collegamenti per trovare i dettagli -