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"

    Rapporteer Plaats commentaar