diff options
author | David A. Madore <david+git@madore.org> | 2023-12-13 15:00:19 +0100 |
---|---|---|
committer | David A. Madore <david+git@madore.org> | 2023-12-13 15:00:19 +0100 |
commit | 3379ba5145293225b22d7ccc7ce1d40fa915aac2 (patch) | |
tree | ed065a2ea760ca96d2ae917c06308a4bd05050ab | |
parent | 5fd56f4040d6cee45ca87600fa73f5efbce17b2b (diff) | |
download | inf110-lfi-3379ba5145293225b22d7ccc7ce1d40fa915aac2.tar.gz inf110-lfi-3379ba5145293225b22d7ccc7ce1d40fa915aac2.tar.bz2 inf110-lfi-3379ba5145293225b22d7ccc7ce1d40fa915aac2.zip |
Applications of continuations.
-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} % |