Ceci est une ancienne révision du document !


Langage de programmation Common Lisp

Common Lisp est un langage de programmation de la famille des Lisp, multi-paradigmes, compilé, typé dynamiquement.

Common Lisp est une spécification standardisée par l'ANSI en 1984, et compte plusieurs implémentations. SBCL (Steel Bank Common Lisp) est l'implémentation open-source la plus populaire.

Aujourd'hui, Common Lisp est toujours utilisé dans l'industrie dans beaucoup de domaines: informatique quantique, analyses financières, systèmes de planification, logiciels de modélisation, musique assistée par ordinateur, assistants de preuves, applications web…

Les premières origines des langages Lisp remontent aux années 60 suivant les travaux de John McCarthy.

On distinguera plusieurs dialectes de la famille des Lisp: Common Lisp, la famille des Scheme, Clojure, et les langages avec une syntaxe Lisp qui transpilent dans un autre langage hôte (tel que LFE: Lisp-Flavored Erlang).

Installation

Il vous faut installer une implémentation. Sous Ubuntu, plusieurs sont disponibles, mais nous utiliserons sbcl:

$ apt install sbcl rlwrap

Première utilisation

SBCL contient un interpréteur de commandes et un compilateur. Pour évoquer l'interpréteur et obtenir un "REPL" (Read Eval Print Loop) basique en ligne de commande, appelez sbcl.

Mais pour obtenir une interface plus ergonomique, utilisez l'interface à readline avec rlwrap (readline wrapper):

$ rlwrap sbcl

Vous pouvez entrer du code directement dans l'interpréteur de commandes. Par exemple:

CL-REPL> (+ 40 2)
;; => 42
CL-REPL> (defun hello (name) (format t "Salut ~a !" name))
;; => HELLO
CL-REPL> (hello "moi")
;; => "Salut moi !"
CL-REPL> (mapcar #'hello (list "moi" "toi"))
;; => ("Salut moi !" "Salut toi !")

Bravo ! Vous venez de voir que:

- Lisp utilise une notation préfixée. Au lieu d'appeler "2 + 2", soit une opérande, une fonction, une opérande, on appelle la fonction d'abord et les opérandes à la suite, soit "(+ 2 2)". - les appels de fonction se font en ouvrant une parenthèse et en la refermant après les arguments: (+ 40 1 1). -

  • common_lisp.1668769828.txt.gz
  • Dernière modification: Le 18/11/2022, 12:10
  • par dzecniv