DEFINITION MODULE lists1; (* Länkade lagringsstrukturer: listor, utan pekare & dynamisk minnesallokering. *) CONST Max = 1000; (* max så här många listelement totalt *) TYPE List = [0..Max]; (* en lista är ett index till en nod (eller nil) *) TYPE Info = INTEGER; (* Typen på elementen i listan *) (* === Konstrurerare === *) PROCEDURE nil():List; (* tomma listan *) PROCEDURE cons(x:Info; xs:List):List; (* cons lägger till x först i listan xs *) (* === Predikat === *) PROCEDURE null(l:List):BOOLEAN; (* null testar om en lista är tom *) (* Selektorer *) PROCEDURE hd(l:List):Info; (* hd ger första elementet i listan l *) PROCEDURE tl(l:List):List; (* tl ger resten av listan l utan första elementet *) END lists1.