64 lines
2.0 KiB
TeX
64 lines
2.0 KiB
TeX
|
\chapter{Introduction}
|
||
|
|
||
|
\paragraph{Lisp~:} fanboy du lisp~! C'est sans doute l'un des langage qui
|
||
|
inclus le plus de paradigme possible~: homoiconicité (un autre exemple serait
|
||
|
Prolog).
|
||
|
|
||
|
Tous les dialectes de lisp sont composés de 7 opérateurs.
|
||
|
|
||
|
Dans les dialectes sympa, il y a Scheme qui est simple et minimaliste.
|
||
|
Common Lisp est un standard et possède même des bibliothèques standards.
|
||
|
Emacs Lisp est un mélange du Common Lisp et du Mac Lisp.
|
||
|
|
||
|
Ruby est inspiré de Lisp.
|
||
|
|
||
|
\section{Paradigme}
|
||
|
|
||
|
Un \emph{paradigme} est une conception qui permet d'exprimer un certain nombre
|
||
|
de choses~: fonctionnel, impérative, procédural, \ldots
|
||
|
|
||
|
Cela permet de faciliter l'écriture de certain concepts~: dans certain
|
||
|
paradigme, il est plus simple de faire certaines choses. Tout est possible
|
||
|
partout, plus ou moins simplement :p\\
|
||
|
|
||
|
Le paradigme affecte donc l'expressivité d'un langage, mais aussi la manière de
|
||
|
penser dans un langage.
|
||
|
|
||
|
Généralement, un langage n'a pas de paradigme ferme.
|
||
|
|
||
|
\section{1er ordre}
|
||
|
|
||
|
Inventé par Christopher Strackey.\\
|
||
|
|
||
|
Un objet de première classe peut être stocké dans une variable, agrégé
|
||
|
(structure), passer en argument à une fonction, retourner d'une fonction,
|
||
|
manipuler de manière anonyme (utiliser un entier sans l'avoir assigné à une
|
||
|
variable) ou faire de la construction dynamique (un entier calculé à partir de
|
||
|
deux autres entiers).\\
|
||
|
|
||
|
Dans une langage fonctionnel, la fonction est un objet de première classe.
|
||
|
|
||
|
\subsection{Lisp 1 vs 2}
|
||
|
|
||
|
Common Lisp est un Lisp 2, Scheme un Lisp 1. Déréférence les espaces de noms.
|
||
|
|
||
|
\subsection{Mapping et folding}
|
||
|
|
||
|
\paragraph{Mapping} Consiste à appliquer une fonction sur tous les éléments
|
||
|
d'une fonction.
|
||
|
|
||
|
\paragraph{Folding} Consiste à combiner 2 par 2 tous les éléments d'une liste
|
||
|
pour n'avoir plus qu'une valeur unique à la fin.
|
||
|
|
||
|
\paragraph{Retour fonctionnel} Capacité à créer de nouvelles fonctions à la
|
||
|
volée.
|
||
|
|
||
|
\section{Pureté}
|
||
|
|
||
|
\section{Évaluation}
|
||
|
|
||
|
\section{Typage}
|
||
|
|
||
|
\section{Résumé}
|
||
|
|