metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-02-05 10:13 am

Заебатая тема: исключения как монады

Мы тут как-то с [livejournal.com profile] theiced спорили за исключения vs коды ошибок (или null), когда он на дотнете кромешный ад писал.

Вот тут по ссылке http://ivan-gandhi.livejournal.com/1867305.html все расписано самоочевидным образом, чем печальны null, чем хороши исключения, и почему вообще положено использовать Option (Maybe T) в качестве типа для возвращения результата.

У исключений есть еще ценное свойство, которое в Maybe особо не эмулируешь, а в Either будет закат солнца вручную - стеки вызовов. Ну и разные типы ошибок в Maybe тоже не засунешь, Nothing он и есть Nothing. В Either их тоже особо не засунешь, без заворачивания в алгебраический тип по одному конструктору на каждый вид исключения(oh shit, в жабе же все равно исключения checked, это примерно оно и есть).

[identity profile] volodymir-k.livejournal.com 2012-02-05 11:39 am (UTC)(link)
> в жабе же все равно исключения checked

Канделябром за брехню! за невежество!
В жабе и чекед есть, и рантайм, и конструктор с произвольной строкой, и вообще эррор, и полный изрыгабль.

А по смыслу полностью согласен.
Edited 2012-02-05 11:39 (UTC)

[identity profile] metaclass.livejournal.com 2012-02-05 11:52 am (UTC)(link)
Ну часть иерархии checked, часть unchecked, да.