LISP - Fonctions

Une fonction est un groupe d'instructions qui exécutent ensemble une tâche.

Vous pouvez diviser votre code en fonctions distinctes. La façon dont vous divisez votre code entre différentes fonctions dépend de vous, mais logiquement, la division est généralement de sorte que chaque fonction effectue une tâche spécifique.

Définition des fonctions dans LISP

La macro nommée defunest utilisé pour définir des fonctions. ledefun la macro a besoin de trois arguments -

  • Nom de la fonction
  • Paramètres de la fonction
  • Corps de la fonction

La syntaxe de defun est -

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

Illustrons le concept par des exemples simples.

Exemple 1

Écrivons une fonction nommée averagenum qui imprimera la moyenne de quatre nombres. Nous enverrons ces nombres comme paramètres.

Créez un nouveau fichier de code source nommé main.lisp et tapez le code suivant dedans.

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

Lorsque vous exécutez le code, il renvoie le résultat suivant -

25

Exemple 2

Définissons et appelons une fonction qui calculerait l'aire d'un cercle lorsque le rayon du cercle est donné en argument.

Créez un nouveau fichier de code source nommé main.lisp et tapez le code suivant dedans.

(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)

Lorsque vous exécutez le code, il renvoie le résultat suivant -

Radius:  10.0
Area:   314.1592

Veuillez noter que -

  • Vous pouvez fournir une liste vide comme paramètres, ce qui signifie que la fonction ne prend aucun argument, la liste est vide, écrite comme ().

  • LISP autorise également les arguments facultatifs, multiples et mots-clés.

  • La chaîne de documentation décrit le but de la fonction. Il est associé au nom de la fonction et peut être obtenu à l'aide dudocumentation fonction.

  • Le corps de la fonction peut être constitué de n'importe quel nombre d'expressions Lisp.

  • La valeur de la dernière expression du corps est renvoyée comme valeur de la fonction.

  • Vous pouvez également renvoyer une valeur de la fonction à l'aide du return-from opérateur spécial.

Laissez-nous discuter des concepts ci-dessus en bref. Cliquez sur les liens suivants pour trouver des détails -