summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2023-11-15 09:18:40 +0100
committerDavid A. Madore <david+git@madore.org>2023-11-15 09:18:40 +0100
commit4c08af0ab177054ed9a026edca97f53f69772ef6 (patch)
treefaa4edbcbebd3ea8fe3fda5d4bb66910b5e4a416
parentf4581bfe1ddd67b446a25e0ce08d723e7c35a9b6 (diff)
downloadinf110-lfi-4c08af0ab177054ed9a026edca97f53f69772ef6.tar.gz
inf110-lfi-4c08af0ab177054ed9a026edca97f53f69772ef6.tar.bz2
inf110-lfi-4c08af0ab177054ed9a026edca97f53f69772ef6.zip
Use of typing systems beyond value control.
-rw-r--r--transp-inf110-02-typage.tex36
1 files changed, 36 insertions, 0 deletions
diff --git a/transp-inf110-02-typage.tex b/transp-inf110-02-typage.tex
index 688b2c1..17897a0 100644
--- a/transp-inf110-02-typage.tex
+++ b/transp-inf110-02-typage.tex
@@ -298,6 +298,42 @@ fonction du type de son argument (connu à la compilation !).
\end{frame}
%
\begin{frame}
+\frametitle{Utilisations du typage au-delà des valeurs stockées}
+
+\itempoint Annotation des \textbf{exceptions soulevables} (fréquent,
+p.ex. Java).
+
+\bigskip
+
+\itempoint Annotation de la \textbf{mutabilité} par le type.
+P.ex. $\texttt{Nat}$ = type d'un entier (immuable) mais
+$\texttt{Ref~Nat}$ = type d'une \alert{référence} vers un entier
+(mutable).
+
+\bigskip
+
+\itempoint Annotation des \textbf{effets de bord} par le type. P.ex.,
+en Haskell, $\texttt{Char}$ = caractère = fonction de zéro argument
+renvoyant un caractère (fonction pure : toujours le même retour), mais
+$\texttt{IO~Char}$ = \alert{action} avec effets de bord renvoyant un
+caractère ($\texttt{IO}$ est un constructeur de type appelé « monade »
+I/O).
+
+\bigskip
+
+\itempoint Typage \textbf{linéaire} (forme de typage
+« sous-structurel ») ou types à unicité : assure qu'une valeur est
+utilisée \alert{une et une seule fois} dans un calcul (ni duplication
+ni perte sauf manœuvre spéciale).
+
+\smallskip
+
+Permet d'optimiser la gestion de la mémoire (Rust) et/ou d'annoter les
+effets de bord (Clean).
+
+\end{frame}
+%
+\begin{frame}
\frametitle{Quelques exemples}
{\footnotesize Éviter les termes de typage « faible » et « fort », qui