Why such advanced things? One can give much more practical examples, units for example.

I.e. the following isn't possible in C:

[pascal]
procedure write(lmy_linked_list;var f:file);

begin
if l<>nil then
begin
system.write(f,l^.data);
write(l^.next);
end;
end;
[/pascal]

Summing it up, in C you are constantly evading already existing identifiers. In Pascal, hakuna matata!