Здравствуйте, EvilChild, Вы писали:
VD>>Да и нужны тут не алгеброические типы, а аналог паттерн-матчинга.
EC>Насколько я понимаю паттерн матчинг это процесс обратный конструированию значения алгебраического типа.
EC>Хотя дело даже не в этом. NPE возможен когда у нас есть reference семантика.
EC>Например в Haskell он невозможен потому как там её просто нет (всякие извраты с IORef не в счёт).
В языке Nice, работающем поверх JVM, сделали хорошую попытку устранения NPE:
http://nice.sourceforge.net/manual.html#optionTypes
Хотя в своей реализации они так и не смогли выловить все ветки if-ов при контроле ненулевых ссылок. А это наводит на мысль что подобный контроль в общем случае является слишком сложной задачей.
Что-то подобное хотят реализовать так же в ближайших версиях Eiffel-я.