1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | MODULE Lists;
(*** declare global constants, types and variables ***)
TYPE
List* = POINTER TO ListNode;
ListNode = RECORD
value : INTEGER;
next : List;
END;
(*** declare procedures ***)
PROCEDURE (VAR list: List) add* (val : INTEGER);
BEGIN
IF list = NIL THEN
NEW(list); (* create record instance *)
list.value := val;
ELSE
list.next.add(val); (* recursive call to .add *)
END
END add;
END Lists. |