Введение
Тип возврата для функций, которые не возвращают значения при вызове, – тип void в языках программирования. Тип void, в ряде языков программирования, произошедших от C и Algol68, является типом возврата функции, которая завершается нормально, но не предоставляет никакого результирующего значения вызывающей стороне. Обычно такие функции вызываются ради их побочных эффектов, таких как выполнение определенной задачи или запись в выходные параметры. Использование типа void в этом контексте сопоставимо с процедурами в Pascal и синтаксическими конструкциями, определяющими подпрограммы в Visual Basic. Он также аналогичен единичному типу, используемому в функциональных языках программирования и теории типов. Сравнение смотрите в разделе "Единичный тип" #В языках программирования. Языки C и C++ также поддерживают указатель на тип void (обозначаемый как void *), но это несвязанное понятие. Переменные этого типа являются указателями на данные неизвестного типа, поэтому в этом контексте (но не в других) void * действует примерно как универсальный или верхний тип. Программа может преобразовать указатель на любой тип данных (за исключением указателя на функцию) в указатель на void и обратно в исходный тип без потери информации, что делает эти указатели полезными для полиморфных функций. Стандарт языка C не гарантирует, что различные типы указателей имеют одинаковый размер или выравнивание.
the void type in computer programming languages
The void type, in several programming languages derived from C and Algol68, is the return type of a function that returns normally, but does not provide a result value to its caller. Usually such functions are called for their side effects, such as performing some task or writing to their output parameters. The usage of the void type in such context is comparable to procedures in Pascal and syntactic constructs which define subroutines in Visual Basic. It is also similar to the unit type used in functional programming languages and type theory. See Unit type#In programming languages for a comparison. C and C++ also support the pointer to void type (specified as void *), but this is an unrelated notion. Variables of this type are pointers to data of an unspecified type, so in this context (but not the others) void * acts roughly like a universal or top type. A program can convert a pointer to any type of data (except a function pointer) to a pointer to void and back to the original type without losing information, which makes these pointers useful for polymorphic functions. The C language standard does not guarantee that the different pointer types have the same size or alignment.
В Хаскелле
В отличие от C++, в функциональном языке программирования Haskell тип void (или пусто́й тип) обозначает тип, не имеющий значений. Функция, возвращающая тип void, не возвращает никакого результата, а программа с побочными эффектами и сигнатурой типа IO Void не завершается или аварийно прекращает работу. В частности, не существует полных функций, возвращающих тип void.