LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

Вот есть юнит тайп (у тебя nulltype), отлично подходит для описания процедур void f(…)

Если брать аспект того, сообщает ли нам функция какую-то run-time информацию, то nulltype и void одинаково говорят нам, что не сообщает. То есть в обоих случаях имеет место вырожденная область значений.

Но набор допустимых операций - разный.

Основное назначение nulltype - это обозначение пустоты в ситуации работы с указателями. Тип указателя это дизъюнкция а ля NullablePointer(T) = Pointer(T) | nulltype. Поэтому если у нас есть указатель x и функция nulltype f(), то запись x = f(); будет корректна.

А в случае с void функциями это не то, что мы хотим получить.

Далее, также возможна и функция с сигнатурой void g(nulltype).

И в таком случае запись g(f()) будет корректна.

Исходная версия wandrien, :

Вот есть юнит тайп (у тебя nulltype), отлично подходит для описания процедур void f(…)

Если брать аспект того, сообщает ли нам функция какую-то run-time информацию, то nulltype и void одинаково говорят нам, что не сообщает. То есть в обоих случаях имеет место вырожденная область значений.

Но набор допустимых операций - разный.

Основное назначение nulltype - это обозначение пустоты в ситуации работы с указателями. Тип указателя это дизъюнкция а ля NullablePointer = Pointer(T) | nulltype. Поэтому если у нас есть указатель x и функция nulltype f(), то запись x = f(); будет корректна.

А в случае с void функциями это не то, что мы хотим получить.

Далее, также возможна и функция с сигнатурой void g(nulltype).

И в таком случае запись g(f()) будет корректна.