Az Alphard programozási nyelv

Sablonok

Az Alphard programozási nyelv nagyban támogatja az adatabsztrakciót, így megtalálható benne a generic, a típussal való paraméterezhetõség fogalma is.

Az Alphardban új típust a formák segítségével definiálhatunk, aminek több paramétert is megadhatunk, köztük más formákat, azaz más típusokat is. Egy ilyen forma paraméter után felsorolhatjuk azokat a mûveleteket, amivel a típusnak rendelkeznie kell (az Alphardban még nincs öröklõdés, ezért így oldották meg a formális paraméter kötött tulajdonságait).

Mivel a formák ugyanúgy paraméterezhetõk, mint az eljárások, ezért a nyelv definiálói az eljárások paraméterei közt is megengedik más formák használatát, ezáltal az eljárások és függvények elláthatól generic paraméterekkel. Mivel azonban ezeket az alprogramokat formákban definiáljuk, típusokhoz kötjük, ezért általában célszerûbb az adott típust generic paraméterrel ellátni, és az eljárásban arra hivatkozni.


Példa:
form F(T :form, x:int) is specs var m:int; vproc p(f:F):T pre {m<x} post {m>x}; ... impl const x:as specified var m:as specified vproc p is F.m:=F.x+1; ... end form set(maxsize :integer, element :form <&:=,&=>) is specs proc insert (s :set, x :element) ... proc remove (s :set, x :element) ... func has (s :set, x :element) :boolean ... impl ... end