summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2023-11-15 10:13:07 +0100
committerDavid A. Madore <david+git@madore.org>2023-11-15 10:13:07 +0100
commit319ff65d11931f4900483335fcd414f6c0fd8c19 (patch)
treeea4ac86aa49c6a12414d5d70134fb63cc7bb58ae
parent4c08af0ab177054ed9a026edca97f53f69772ef6 (diff)
downloadinf110-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.tex51
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}
%