Quelqu'un pourrait-il me donner une distinction claire entre le système de type latent et manifeste?Quelle est la différence entre un type de type latent et un type de manifeste?
Répondre
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.
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.
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é.
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.
- 1. Quelle est la différence entre un type générique et une définition de type générique?
- 2. Quelle est la différence entre le type énuméré ASN.1 et le type de choix?
- 3. En objectif-C, quelle est la différence entre Type * var et Type * var?
- 4. Quelle est la différence entre le type et le type .__ new__ en python?
- 5. Quelle est la différence entre un type d'URL et un schéma d'URL?
- 6. Quelle est la différence entre un socket "stream-type" et un socket "datagramme"?
- 7. Différentes méthodes de conversion de type. Quelle est la différence
- 8. Différence entre type (obj) et obj .__ classe__
- 9. différence entre la conversion de type et la coulée de type?
- 10. ASP.NET: quelle est la différence entre les services Web de type simple et complexe?
- 11. Quelle est la différence entre float et float? type de retour en C# propriété
- 12. différence entre une propriété d'objet et une propriété de type
- 13. Quelle est la différence entre les caractères génériques bornés et les paramètres de type?
- 14. Différence entre la variable const et le type const variables
- 15. Déterminer si un type est un type de référence ou un type de valeur
- 16. F #: Quelle est la différence entre le module let et le type static let?
- 17. Quelle est la différence entre Object, *, et aucun type du tout?
- 18. Quelle est la différence spécifique entre <html: submit tag et <input type = "submit"?
- 19. Quelle est la différence entre type et xtype dans les vues système dans SQL Server?
- 20. Quelle est la différence entre <input type = "button" /> et <button>?
- 21. Quelle est la différence entre les polices TrueType et les polices Type-1?
- 22. quelle est la différence entre $ .ajax (... type: "POST", dataType: "JSON" ...) et $ .post (..., "JSON")
- 23. Quelle est la syntaxe pour un type de tableau?
- 24. Différence entre renvoyer la classe modifiée et utiliser type()
- 25. Type et tuple anonymes
- 26. Quelle est la différence entre un assistant et un partiel?
- 27. Quelle est la différence entre un DataSource et un DataAdapter?
- 28. Quelle est la différence entre un nanokernel et un exokernel?
- 29. Quelle est la différence entre un HashMap et un TreeMap?
- 30. Quelle est la différence entre un analyseur et un scanner?
Je ne sais pas haskell, pourriez-vous s'il vous plaît illustrer chacune de ces caractéristiques de type en haskell? – unj2
plus 1! mais comment Haskell est-il structurellement typé? –