From 319ff65d11931f4900483335fcd414f6c0fd8c19 Mon Sep 17 00:00:00 2001
From: "David A. Madore" <david+git@madore.org>
Date: Wed, 15 Nov 2023 10:13:07 +0100
Subject: More examples of languages with interesting type systems.

---
 transp-inf110-02-typage.tex | 51 +++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 47 insertions(+), 4 deletions(-)

(limited to 'transp-inf110-02-typage.tex')

diff --git a/transp-inf110-02-typage.tex b/transp-inf110-02-typage.tex
index 17897a0..3802414 100644
--- a/transp-inf110-02-typage.tex
+++ b/transp-inf110-02-typage.tex
@@ -334,7 +334,12 @@ effets de bord (Clean).
 \end{frame}
 %
 \begin{frame}
-\frametitle{Quelques exemples}
+\frametitle{Quelques exemples (1)}
+
+Les langages impératifs \emph{tendent} à avoir des systèmes de typage
+moins complexes que les langages fonctionnels.
+
+\medskip
 
 {\footnotesize Éviter les termes de typage « faible » et « fort », qui
   veulent tout (ou rien) dire.\par}
@@ -372,11 +377,49 @@ paramétrique) avec Java 5, puis diverses sortes d'inférence.
 \itempoint Rust : interaction avec la gestion de la mémoire
 ($\approx$ typage linéaire).
 
+\end{frame}
+%
+\begin{frame}
+\frametitle{Quelques exemples (2)}
+
+{\footnotesize Qqs exemples de langages, généralement fonctionnels,
+  ayant un système de typage (très) complexe, mélangeant plusieurs
+  fonctionnalités évoquées (interactions parfois délicates !) :\par}
+
+\medskip
+
+\itempoint OCaml : inférence de type à la H-M, types récursifs,
+polymor\textsuperscript{sme} paramétrique.
+
+\smallskip
+
+Système de « modules » (« signatures » $\approx$ interfaces
+abstraites, « foncteurs » entre signatures…), comparable aux
+« classes » des langages orientés objet.
+
+\medskip
+
+\itempoint Haskell : beaucoup de similarité avec OCaml :
+
+\smallskip
+
++ polymorphisme ad hoc : « classes de type », comparable aux
+« modules » de OCaml, aux « classes » des langages orientés objet.
+
+\smallskip
+
++ purement fonctionnel (toutes les fonctions sont « pures ») : les
+effets de bord sont enrobés dans des « monades ».
+
+\medskip
+
+\itempoint Mercury (langage de type fonctionnel+logique, inspiré de
+Haskell+Prolog) : typage comparable à Haskell ; + sous-typage,
+linéarité.
+
 \medskip
 
-\itempoint OCaml, Haskell : langages fonctionnels avec système de
-typage très complexe (polymor\textsuperscript{sme} paramétrique, types
-récursifs… ; Haskell : +polymor\textsuperscript{sme} ad hoc)
+\itempoint Idris : langage fonctionnel + assistant de preuve.
 
 \end{frame}
 %
-- 
cgit v1.2.3

