Работают, если без фанатизма, но есть проблемы, когда "шаблон на шаблоне и шаблоном погоняет". Как пользоваться - онисано в спецификации языка. Ну плюс сделали нетипизированные параметры.
Типы параметров:  модуль (IMPORT), тип (TYPE), константа (CONST). Процедуры считаются константами.

MODULE A( IMPORT M, TYPE T, CONST C );
VAR x*: M.List;
VAR y*: ARRAY C OF T;

END A.

MODULE B;
IMPORT C, A(C, SIGNED32, 3 );

BEGIN
VAR a := A.y[0];
A.x.Add(5);
END B;