\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é}

