2009-12-19 5 views

Répondre

5

Voir Anton van Straaten's post sur Lambda the Ultimate. Il décrit le typage latent dans le contexte de Scheme.

Le typage de manifeste serait utilisé dans un langage typé statiquement où le type d'un terme est déclaré syntaxiquement ou peut être déduit à la compilation d'autres termes de ce genre. Latence dactylographiée: Style de typage ne nécessitant pas de déclaration de type explicite.

2

Il est associé à duck typing, dynamic typing et type inference. Vous pouvez les voir dans des langages tels que Python, Lisp, Haskell, etc.

Type de manifeste: Le type de toutes les variables déclarées est explicitement identifié. Des langages comme C, C++ et Java suivent cela.

9

Parfois, le même concept est inventé indépendamment dans différents domaines de l'informatique. C'est l'une de ces occasions. Ce que la communauté Scheme appelle latent et manifeste dactylographie, le reste du monde appelle implicite et explicite frappe. Le sens est exactement la même:

Dans explicite manifeste frappe/, le programmeur doit explicitement écrire les types, donc les types deviennent manifeste dans le code source.

Dans implicite/ latente frappe, le programmeur n'écrit pas les types. Les types sont donc implicite ou latent.

Veuillez noter que la question du typage implicite ou explicite est complètement orthogonale à, par ex. typage dynamique ou statique, typage fort ou faible, typage sain/non pondéré, typage sûr/typé non sécurisé, typage nominal vs typage structurel et typage du canard. Par exemple, Haskell est implicitement, fortement, statiquement, sain, sûr, structurellement typé.

+0

Je ne sais pas haskell, pourriez-vous s'il vous plaît illustrer chacune de ces caractéristiques de type en haskell? – unj2

+0

plus 1! mais comment Haskell est-il structurellement typé? –

1

Une partie de la raison pour laquelle il est difficile de répondre à votre question est qu'il s'agit d'un domaine de recherche actif. En particulier, il y a tout un tas de personnes qui voudraient permettre de mélanger des langages typés et non typés, et de permettre des programmes où certaines parties sont typées et certaines parties ne le sont pas.

Je prétends qu'il n'y a pas encore d'accord général sur le sens qui sera finalement attaché au terme "type latent". Cependant, le problème des types latent et manifeste n'est pas le même problème que celui de l'inférence de type.

L'inférence de type, dans un langage typé statiquement, fait référence à un système qui peut déduire des types pour des termes de programme sans aide de programmeur, typiquement en utilisant un système de type hindley-milner et une unification. Haskell et OCaml ont tous deux une inférence de type.

Questions connexes