Geef het verschil aan tussen de concepten genericiteit en parametrische polymorfie
Bij generieke typen creëren we eerst 2 afzonderlijke functies, een voor de typen Integer en Boolean en een voor het type String, er is dus geen sprake van 1 (polymorfe) functie die op parameters van verschillende typen mag worden toegepast: Voorbeeld: snd:: (a,b)-> b snd (,y) = y Hugs> snd (13, True) True Hugs>snd ("Jeffrey","Watt") "Watt"
In Ada kunne we de volgende generieke functie declareren: generic type a is private; type b is private; function snd (x:a;y:b return b is begin return y; end; a en b zijn hier formele typeparameters (dus geen typevariabelen) met behulp waarvan we een type kunnen doorgeven. Voor we snd kunnen gebruiken, moeten we de generieke functie eerst instantieren met concrete actuele parameters: function snd_1 is new snd (Integer, Boolean); function snd_2 is new snd (String, String); Hierna kunne we van snd_1 en snd_2 gebruikmaken: snd_1 (13, True) = True snd_2 ("Jeffrey", "Watt") = "Watt"