Mise en œuvre de Lisp pur
Lisp
H2520 v2 Archive

Mise en œuvre de Lisp pur
Lisp

Auteur(s) : Christian QUEINNEC

Date de publication : 10 juin 1995

Logo Techniques de l'Ingenieur Cet article est réservé aux abonnés
Pour explorer cet article plus en profondeur Consulter l'extrait gratuit

Déjà abonné ?

Présentation

1 - Généralités

  • 1.1 - Caractéristiques
  • 1.2 - Histoire

2 - Noyau de Lisp

  • 2.1 - Atomes
  • 2.2 - Liste
  • 2.3 - Syntaxe
  • 2.4 - Fonctions
  • 2.5 - Formes
  • 2.6 - Variables
  • 2.7 - Prédicats
  • 2.8 - Sélecteurs
  • 2.9 - Composition fonctionnelle
  • 2.10 - Construction de listes
  • 2.11 - Formes spéciales
  • 2.12 - Conditionnelle
  • 2.13 - Séquence
  • 2.14 - Construction de fonctions
  • 2.15 - Récursivité
  • 2.16 - Évaluation récursive
  • 2.17 - Pensée récursive
  • 2.18 - Mention
  • 2.19 - Résumé

3 - Mise en œuvre de Lisp pur

  • 3.1 - Boucle fondamentale d’interaction
  • 3.2 - Évaluateur
  • 3.3 - Exemple détaillé
  • 3.4 - Représentation des données
  • 3.5 - Trace d’évaluation

4 - Autres aspects

  • 4.1 - Fonctions anonymes
  • 4.2 - Macros
  • 4.3 - Échappements
  • 4.4 - Propriétés

5 - Dialectes de Lisp

  • 5.1 - Common Lisp
  • 5.2 - Scheme
  • 5.3 - Autres

6 - Conclusion

Sommaire

Présentation

Auteur(s)

  • Christian QUEINNEC : Ancien élève de l’École Polytechnique - Ingénieur en chef de l’Armement - Maître de conférences à l’École Polytechnique

Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.

Lire l’article

INTRODUCTION

Lisp est un langage de programmation ou plutôt, en l’absence actuelle de toute standardisation, une famille de dialectes spécialisés en calcul symbolique. L’invention de Lisp a répondu au besoin de manipulation d’entités variées et non plus simplement de nombres. Le calcul formel, les systèmes experts, les interfaces en langages naturels, la reconnaissance de formes ou, plus généralement, la représentation et la manipulation de connaissances deviennent ainsi directement accessibles sans recours à d’opaques codages numériques ; les algorithmes peuvent être concentrés à leur essence, et leur élaboration épouse, dans une large mesure, les contraintes internes des problèmes qu’ils résolvent et non celles du langage support.

Au dire de son inventeur, Lisp est un optimum local parmi les langages de programmation, ce qui explique sa longévité et sa stabilité [7]. Aucun de ses dérivés n’a su le supplanter : Lisp, les contenant déjà tous en germe, les assimila simplement à de nouveaux styles de programmation. Aujourd’hui, Lisp a cependant bien évolué et s’est considérablement enrichi de nouveaux types de données. Par ailleurs, son substrat mathématico‐logique (λ‐calcul, preuve de théorèmes, récursion...) ainsi que plus de trente années de recherche ont conduit à des systèmes (interprètes et / ou compilateurs) efficaces, à de très riches environnements de développement, à des machines spécialisées dans l’exécution de programmes Lisp ainsi qu’à des réalisations dont l’excellence n’est plus à prouver. Citons seulement et parce qu’elles représentent des extrêmes : Macsyma, système de calcul formel, et Emacs, éditeur de texte pleine page programmable [4].

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 93 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


VERSIONS

Il existe d'autres versions de cet article :

DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v2-h2520

Lecture en cours
Présentation

Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

3. Mise en œuvre de Lisp pur

Dès sa naissance, Lisp a été conçu comme un langage interactif. C’était, en 1960, une vision tout à fait nouvelle puisque les interactions s’y résumaient à des échanges de cartes perforées. Toutefois, tous les mécanismes qui ont permis plus tard l’éclosion des environnements de programmation étaient déjà présents.

3.1 Boucle fondamentale d’interaction

Une fois lancé, un système de développement Lisp entre dans une boucle d’interaction. Cette boucle consiste à lire un programme (read), à l’évaluer (eval), à imprimer sa valeur (print) puis à recommencer le tout. Cette boucle qui met en œuvre trois nouvelles fonctions spécialisées (read, eval, et print) peut ainsi être définie en Lisp :

(defun toplevel ()

      (progn (print (eval (read)))

   (toplevel)))

read est la fonction qui retourne en valeur un objet Lisp lu sur le flux d’entrée (clavier ou fichier). Ce n’est pas une véritable fonction au sens mathématique puisque à égalité d’arguments (et read n’en requiert pas) ne correspond point d’égalité de résultats ; autrement dit deux appels successifs à read n’ont aucune raison de retourner le même objet sauf pour l’usager à l’introduire deux fois de suite. read n’est, sous une forme fonctionnelle, que la réalisation d’un effet de bord, à savoir : soustraire du flux d’entrée une suite de caractères à convertir en une expression. read est une fonction de très haut niveau puisqu’elle permet de lire n’importe quoi depuis un simple chiffre jusqu’à un programme (donc une liste) de plusieurs milliers de lignes.

print est la fonction symétrique. Tout comme read, print est la version fonctionnalisée de la mise en œuvre d’un effet de bord qui est d’imprimer son argument. print est aussi une fonction générique de haut niveau car capable d’imprimer un flottant ou une liste de longueur tout à fait quelconque.

eval, enfin, est une des caractéristiques majeures de Lisp. eval est une fonction qui, prenant un argument quelconque, se saisit de lui et le considère comme un programme qu’il s’agit d’évaluer afin de retourner sa valeur. Peu de langages possèdent ce trait qui peut être vu, si on le replace dans le contexte d’un langage classique, comme la possibilité d’appeler...

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 95 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


Lecture en cours
Mise en œuvre de Lisp pur

Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

Sommaire
Sommaire
Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 95 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre