diff options
Diffstat (limited to 'transp-inf110-02-typage.tex')
-rw-r--r-- | transp-inf110-02-typage.tex | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/transp-inf110-02-typage.tex b/transp-inf110-02-typage.tex index 3ded562..6f993fa 100644 --- a/transp-inf110-02-typage.tex +++ b/transp-inf110-02-typage.tex @@ -3277,10 +3277,41 @@ fil en attente, puis considérer $v$ comme valeur de retour de $f$. \par} +\end{frame} +% +\begin{frame} +\frametitle{Applications des continuations} + +\textcolor{blue}{À quoi sert} d'avoir des continuations réifiées (= de +première classe) ? +\begin{itemize} +\item elles peuvent prendre la place d'un mécanisme + d'\alert{exceptions} ou de sortie de boucles (au lieu de soulever + une exception, on invoque la continuation « exceptionnelle » pour + abandonner le calcul normal), +\item mais les continuations, contrairement aux exceptions, peuvent + \alert{reprendre} un calcul interrompu (si sa continuation a été + capturée), +\item elles permettent donc d'implémenter notamment : des générateurs + ou du multitâche coopératif. +\end{itemize} + +\bigskip + +\textcolor{blue}{Le coût d'implémentation} réside essentiellement dans +la gestion de la pile : +\begin{itemize} +\item soit on recopie toute la pile à chaque + capture/invocation de continuation, +\item soit le séquencement d'appels cesse d'être une pile et doit être + géré par le \textit{garbage-collector} (= ramasse-miettes), c'est ce + qui se passera avec CPS (cf. plus loin). +\end{itemize} + \medskip -\itempoint Les continuations permettent d'implémenter le multitâche -coopératif. +Informellement, les \emph{continuations} sont aux appels de fonctions +ce que les \emph{clôtures} sont aux données locales. \end{frame} % |