diff options
author | David A. Madore <david+git@madore.org> | 2023-11-15 10:13:07 +0100 |
---|---|---|
committer | David A. Madore <david+git@madore.org> | 2023-11-15 10:13:07 +0100 |
commit | 319ff65d11931f4900483335fcd414f6c0fd8c19 (patch) | |
tree | ea4ac86aa49c6a12414d5d70134fb63cc7bb58ae | |
parent | 4c08af0ab177054ed9a026edca97f53f69772ef6 (diff) | |
download | inf110-lfi-319ff65d11931f4900483335fcd414f6c0fd8c19.tar.gz inf110-lfi-319ff65d11931f4900483335fcd414f6c0fd8c19.tar.bz2 inf110-lfi-319ff65d11931f4900483335fcd414f6c0fd8c19.zip |
More examples of languages with interesting type systems.
-rw-r--r-- | transp-inf110-02-typage.tex | 51 |
1 files changed, 47 insertions, 4 deletions
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} % |