Lisp est un langage de programmation fonctionnel avec des fonctionnalités impératives. Par fonction, on entend que le style général de la langue est organisé principalement autour d’expressions et de fonctions plutôt que de déclarations et de sous-programmes. Chaque expression Lisp renvoie une certaine valeur. Chaque procédure Lisp est syntaxiquement une fonction; Lorsqu’il est appelé, il renvoie un objet de données comme valeur. Par impératif, nous voulons dire que certaines expressions et procédures Lisp ont des effets secondaires, tels que le stockage dans des variables ou des positions de tableau.
Ainsi, les procédures de Lisp ne sont pas toujours des fonctions au sens «pure» des logiciens, mais en pratique, elles sont fréquemment appelées «fonctions» de toute façon, même celles qui peuvent avoir des effets secondaires, afin de souligner qu’un résultat calculé est toujours retourné. Les caractéristiques impératives sont généralement utilisées avec parcimonie; Alors qu’il est possible de translitterer, par exemple, le code Fortran directement dans Lisp, le résultat ne présenterait pas le style de programmation Lisp typique.
Profitez de ce manuel de formation en PDF pour comprendre mieux le LISP et enrichir votre connaissance.
Commencez à télécharger ce cours adapté pour vous et à apprendre LISP.
Chapitre 9 – Introduction au Lisp 1459-28 ° DiffŽrence ensembliste, en dŽduire le prŽdicat d’ŽgalitŽ ensembliste. (de diff (L M) (cond((null L) nil) ((member (car L) M) (diff (cdr L) M))(t (cons (car L) (diff (cdr L) M))) ))(de egal (L M) (and (null (diff L M) (null (diff M L))))ou bien : (not (or (diff L M) (diff M L))) qui donnera le prŽdicat « ensembles Žgaux » avec ou sans rŽpŽtitions. 9-29 ° Profondeur d’une liste ex. (((a)) (y) h (((g n))) j) . 4 (de prof (L) (if (atom L) 0 (max (1+ (prof (car L))) (prof (cdr L))))))9-30° Union ˆ toutes les profondeurs, ex. (a (s d) (t y (u) ((p)) k) m) . (a s d t y u p k m) (de aplatir (L) (cond((null L) nil) ((atom L) (list L))(t (append (aplatir (car L)) (aplatir (cdr L)) )) ))Comparer avec :(de xyz (L) (cond((atom L) L)(t (cons (xyz (car L)) (xyz (cdr L)))) ))9-31° Elimination des rŽpŽtitions ex. (a z g a s z d g z s) . (a z g s d) (de elim (L) (cond ; c’est une fonction pouvant rendre service apr�s l’union par exemple((null L) nil) ((member (car L) (cdr L)) (elim (cdr L)))(t (cons (car L) (elim (cdr L)))) ))9-32° Placer X ˆ la position N dans L sans supprimer d’ŽlŽments.(de placer (X N L) (append (tete (- N 1) L) (cons X (nthcdr (- N 1) L)))) ; cas d’impossibilitŽs non examinŽs9-33 ° PrŽdicat d’arborescences semblables ex. (a (f g) j ((y)) l) et (k (g n) f ((p)) h)(de homo (L M) (cond((atom L) (atom M)) ((atom M) nil) ((homo (car L) (car M)) (homo (cdr L) (cdr M)))))Remarque : le « t » est inutile dans la derni�re clause, dans la mesure o� « cond » retourne l’Žvaluation de la derni�re expression de cette troisi�me clause au cas o� les deux premi�ressont fausses. 9-34 ° Nombre de feuilles ex. (r ((t)) y (g h) (j m l) p) . 9 (de nbfeuilles (L) (cond ((nullL L) 0) ((atom L) 1) (t (+ (nbfeuilles (car L)) (nbfeuilles (cdr L)))))) ; ici aussi le « t » est inutile