typage statique : Le travail sur les types est intégralement fait à la compilation (donc rien n'est fait à l'exécution). Le contraire est typage dynamique, comme python, perl, ruby... Deux avantages à cela:
- aucune verification de typage n'est nécessaire à l'exécution, ce qui fait gagner du temps à l'exécution.
- La vérification est faite à la compilation, donc si les types utilisés sont incohérents, le code ne compile pas, contrairement au typage dynamique, où une exception est levé à l'exécution.
inférence de type : il n'y a pas besoin de donner les types des variables, le compilateur les infèrent à partir du code. Par exemple : let f n = string_of_int nLe compilateur va trouver tout seul que le type de n est entier et que le type de retour de la fonction est chaîne de caractères.
polymorphisme paramétrique : C'est la possibilité pour un type d'englober un ensemble de type, avec des paramètres permettant une réutilisation du type plus loin. Par exemple : let to_list n = [n]la fonction to_list prend un paramètre (qui peut être de n'importe quel type) et le transforme en une liste de type "liste d'éléments du type du paramètre. Le fait que la fonction puisse prendre un paramètre de n'importe quel type est le polymorphisme, le fait de pouvoir exprimer le type de la fonction grâce au type du paramètre est le paramétrique. Le code au dessus a pour type : 'a -> 'a list ce qui signifie une fonction prenant comme paramètre un paramètre de n'importe quelle type que l'on appelle 'a, et qui retourne une liste de type liste de 'a.
[^] # Re: Différences entre Lua et OCaml ?
Posté par TeXitoi (site web personnel) . En réponse à la dépêche Un nouveau serveur SMTP est né : Tethys, entièrement écrit en Lua. Évalué à 6.
- aucune verification de typage n'est nécessaire à l'exécution, ce qui fait gagner du temps à l'exécution.
- La vérification est faite à la compilation, donc si les types utilisés sont incohérents, le code ne compile pas, contrairement au typage dynamique, où une exception est levé à l'exécution.
inférence de type : il n'y a pas besoin de donner les types des variables, le compilateur les infèrent à partir du code. Par exemple :
let f n = string_of_int nLe compilateur va trouver tout seul que le type de n est entier et que le type de retour de la fonction est chaîne de caractères.polymorphisme paramétrique : C'est la possibilité pour un type d'englober un ensemble de type, avec des paramètres permettant une réutilisation du type plus loin. Par exemple :
let to_list n = [n]la fonction to_list prend un paramètre (qui peut être de n'importe quel type) et le transforme en une liste de type "liste d'éléments du type du paramètre. Le fait que la fonction puisse prendre un paramètre de n'importe quel type est le polymorphisme, le fait de pouvoir exprimer le type de la fonction grâce au type du paramètre est le paramétrique. Le code au dessus a pour type :'a -> 'a listce qui signifie une fonction prenant comme paramètre un paramètre de n'importe quelle type que l'on appelle 'a, et qui retourne une liste de type liste de 'a.