From 319ff65d11931f4900483335fcd414f6c0fd8c19 Mon Sep 17 00:00:00 2001 From: "David A. Madore" 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