Type-inferentie

In de informatica duidt type-inferentie (Engels: Type inference), of impliciete typering, op de mogelijkheid van sommige programmeertalen om automatisch het datatype van een expressie te bepalen. Een programmeertaal die type-inferentie ondersteunt is in staat om zelf de typen van bepaalde expressies in een programma te bepalen, waardoor de programmeur deze niet hoeft te specificeren. De meeste functionele programmeertalen ondersteunen type-inferentie, maar ook sommige talen die niet functioneel zijn (maar wel sterk en statisch getypeerd zijn) bieden type-inferentie.

Het voordeel van type-inferentie is dat de programmeur niet verplicht is alle typen expliciet te declareren, terwijl tegelijkertijd een sterke mate van "type safety" (het voorkomen en detecteren van typefouten) mogelijk blijft.

Het deduceren van de typen van alle expressies in een programma gebeurt tijdens het compileren (compile time). De compiler bepaalt de types van samengestelde expressies aan de hand van de samenstellende expressies. De type signatures van functies die door de gebruiker gedefinieerd worden wordt bepaald aan de hand van het gebruik van de parameters in de functiedefinities. Omdat op deze manier het type van alle gebruikte variabelen en gedefinieerde functies door de compiler bepaald kan worden, kunnen type-declaraties vaak helemaal achterwege gelaten worden.

Het verschil met dynamische typering is dat type-inferentie plaatsvindt tijdens het compileren, voordat het programma uitgevoerd wordt, terwijl bij dynamische typering het bepalen van de typen pas plaatsvindt tijdens de uitvoer van het programma.

Enkele voorbeelden van programmeertalen die in meer of mindere mate type-inferentie ondersteunen zijn Haskell, OCaml, F#, Vala, Scala en recente versies van C++, C# en Java.


© MMXXIII Rich X Search. We shall prevail. All rights reserved. Rich X Search