> -- Юра писал(а):
> Может быть это все-таки неправильно, что NIL  всем типам? Не нарушает ли это строгую типизацию?
Невсем типам, а -множеству значений (любого рассматриваемого) указательного типа.
Если хотите - множеству значений (адресов), которые могут принимать объекты этого указательного типа при "данном раскладе" в памяти системы.

Но тут есть "моментик"...
Про что собсна мы ведём речь? Про тестирование указателя на предмет равенства NIL и - про приведение типа.
В шестой части своей статьи про расширение типов ("дополнительные программные конструкции", кажется) Вирт рассматривает плюсы и минусы "совмещения" обеих операций и даже рассматривает гипотетическую конструкцию

WHEN p IS type DO ... END

Но потом приходит к выводу, что это не слишком рационально и, в конце концов, приводит к усложнению архитектурных решений и запутанной логике (в масштабах проектируемой системы). Он останавливается на "разделении ролей": для проверки действенности указателя - проверять его на NIL в IF, а для приведения и охраны - WITH (с абортом)... (Кстати. за десяток лет до Оберона, в Эль-76, действовоал тот же принцип)...