summaryrefslogtreecommitdiffstats
path: root/transp-inf110-02-typage.tex
diff options
context:
space:
mode:
Diffstat (limited to 'transp-inf110-02-typage.tex')
-rw-r--r--transp-inf110-02-typage.tex35
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}
%