Почему некоторые функции OCaml принимают () в качестве параметра?

Пример в модуле Unix:

val environment : unit -> string array

Почему бы просто:

val environment : string array

?

16
задан Benjamin 27 December 2013 в 14:02
поделиться

1 ответ

Потому что он обозначает функцию, которая принимает значение типа unit в качестве параметра. Тип объекта заполняется только значением "()". Обычно это означает, что функция будет выполнять какой-то ввод-вывод или вызывать побочный эффект и не требует ввода. Подпись второго типа, которую вы предоставили, - это подпись для значения, а не для функции, которую можно применить. Если бы какое-то выражение было привязано к этому имени, это выражение было бы вычислено во время привязки значения, а не во время ссылки на него (как в случае с приложением функции).

19
ответ дан 30 November 2019 в 21:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: