Есть много людей, которые считают, что понятие специального значения null
(поскольку оно используется в lanuages, например C, Java, С#, Perl, Javascript, SQL и т.д.) - плохая идея. Есть несколько вопросов об этом на SO и P.SE, например Лучшее объяснение для языков без нулевого значения и Действительно ли нулевые ссылки плохая вещь?.
Однако я не мог найти какой-либо язык, который будет работать без них. Все языки, с которыми я знаком, имеют null
или что-то подобное (например, "undefined" в Perl).
Я понимаю, что каждый язык должен каким-то образом выражать "отсутствие ценности". Однако вместо "null" или "undefined" это также можно сделать явным, используя что-то вроде Maybe
(Haskell) или Optional
(Guava). Основное отличие от наличия "null" или "undefined" заключается в том, что объект может иметь только "нет значения", если он имеет определенный тип (возможно, необязательно...). Напротив, "null" / "undefined" обычно является допустимым значением для каждого типа.
Существуют ли какие-либо языки, которые не имеют "нулевого" или аналогичного понятия в этом смысле?