A nyelvben lehetőség van generic-ek írására. A modularitás jellege miatt csak modul tehető generikussá, illetve annak interfész része.
A generic-nek paraméterek adhatók, méghozzá csak interfészekkel paraméterezhetünk. Ezeket már a GENERIC INTERFACE-ben fel kell tüntetni és a GENERIC MODULE leírásában is szerepelniük kell.
Csak explicit módon lehet példányosítani, egy speciális formájú interfész ill. modul készítésével. Ezeknek a szintaktikája a következő:
GENERIC INTERFACE GI(A1, ..., An); <body> END GI. GENERIC MODULE GM(A1, ..., An); <body>; BEGIN ... END GM.
Ezeket az Ia, ..., In konkrét interfészekkel a következőképpen példányosíthatjuk:
INTERFACE GIInst = GI(Ia, ..., In) END GIInst MODULE GMInst EXPORTS GIInst = GM(Ia, ..., In) END GMInst
Ezzel létrejön egy GIInst nevű interfész és egy GMInst nevű modul, amiket ugyanágy használhatunk, mint a "sima" társaikat.
A GENERIC példányosításának jelentését a következő konstrukciókkal lehet leírni:
1.
Ahol F1...Fn a generic formális paraméterei, G a neve. Ekkor a példányosítás:GENERIC INTERFACE G( F1, ... Fn ); Dekl.; END G;Ahol A1...An az aktuális paraméterek interfészek. Ez megegyezik az alábbi, hagyományos módon megadott interfésszel:INTERFACE C = G( A1, ... , An ) END I;INTERFACE C; IMPORT A1 AS F1, ... An AS Fn; Dekl.; END C;
2.
Példányosítás:GENERIC MODULE G( F1, ... Fn ); Törzs; END G;Ez megegyezik az alábbi, hagyományos módon megadott modullal:MODULE C = G( A1, ... , An ) END C;Az így átírt kód természetesen nem helyettesítheti az eredetit, hiszen hiányzik belőle a paraméterezés lehetősége. Egy adott paraméter sorozatra viszont ekvivalens eredményt ad.MODULE C; IMPORT A1 AS F1, ... An AS Fn; Törzs; END C;