Cours du jour
This commit is contained in:
parent
bef50f3f61
commit
e74c3a6dc8
3 changed files with 552 additions and 4 deletions
|
@ -55,9 +55,40 @@ volée.
|
|||
|
||||
\section{Pureté}
|
||||
|
||||
Une fonction mathématique, sans effet de bord. En lui passant les mêmes
|
||||
arguments, elle doit toujours renvoyé la même chose quelque soit le contexte.
|
||||
|
||||
Au niveau des variables, elles n'existent plus~! il n'y a que des constantes.\\
|
||||
|
||||
Étant donné qu'écrire dans un terminal est un effet de bord, l'implémentation
|
||||
des fonctions interagissant avec des fichiers sont confinées dans des bunkers.
|
||||
|
||||
\subsection{Intérêt}
|
||||
|
||||
La pureté est essentielle pour le parallélisme. En effet, avec la pureté, on a
|
||||
pas de problème de concurence d'accès, ...
|
||||
|
||||
Par exemple Erlang est parfaitement adapté à ça. Il est d'ailleurs parfaitement
|
||||
adapté à la distribution qui est prévu dans les primitives du langage.
|
||||
|
||||
\paragraph{Sëmantique locale aux fonctions}
|
||||
Étant donné que les fonctions pures n'ont pas d'effet de bord, il est très
|
||||
facile de les tester/déboguer.
|
||||
|
||||
\paragraph{Preuve de programme}
|
||||
|
||||
\section{Évaluation}
|
||||
|
||||
\subsection{Strict}
|
||||
|
||||
Dans un évaluateur strict (tel que Lisp), il va d'abord évaluer les arguments
|
||||
de gauche à droite, puis il applique la fonction avec les arguments évalués.
|
||||
|
||||
\subsection{Lazy} ou évaluation paresseuse (Haskell).
|
||||
|
||||
Les expressions ne sont évaluées que quand on en a besoin.
|
||||
|
||||
\section{Typage}
|
||||
|
||||
\section{Résumé}
|
||||
|
||||
En Haskell, toutes les variables sont typées et la vérification est faite à
|
||||
l'exécution.
|
||||
|
|
Reference in a new issue