Все эти диаграммы типов и функций прекрасным образом укладываются в систему — просто типизированного лямбда-исчисления. Эта система полная, она позволяет успешно решать все задачи программирования.
Ну ведь нет, в просто типизированном лямбда исчислении нельзя формализовать понятие бесконечного цикла т.к. просто нет типа соответствующего такого рода функции, что делает систему не полной по Тьюрингу(если это имелось ввиду).
Мне интересно, а в случае с опциональными полями класса предлагается тоже писать XResult? Меня в принципе смущает, что оригинальный Result не несёт в дженерике тип ошибки(как, например, IO из ZIO), чтобы по сигнатуре можно было понять чего ожидать, а тут ещё и скрывается был ли null результатом выполнения чистой функции или сайд эффекта, т.е. для меня метод возвращающий Result<Option<T>> означает, что метод с сайд эффектом может вернуть значение или отсутствие значения, а ещё ошибку, итого 3 исхода, все из которых видно по сигнатуре, а XResult это скрывает, по итогу на каждый такой метод нужно писать проверку на null, но длиннее т.к. == null заменяется на isInstanceOf NPE и потом ещё и в половине случаев обрабатывать это не как ошибку, а как ожидаемое отсутствие значения.
Ну ведь нет, в просто типизированном лямбда исчислении нельзя формализовать понятие бесконечного цикла т.к. просто нет типа соответствующего такого рода функции, что делает систему не полной по Тьюрингу(если это имелось ввиду).
Мне интересно, а в случае с опциональными полями класса предлагается тоже писать XResult? Меня в принципе смущает, что оригинальный Result не несёт в дженерике тип ошибки(как, например, IO из ZIO), чтобы по сигнатуре можно было понять чего ожидать, а тут ещё и скрывается был ли null результатом выполнения чистой функции или сайд эффекта, т.е. для меня метод возвращающий Result<Option<T>> означает, что метод с сайд эффектом может вернуть значение или отсутствие значения, а ещё ошибку, итого 3 исхода, все из которых видно по сигнатуре, а XResult это скрывает, по итогу на каждый такой метод нужно писать проверку на null, но длиннее т.к. == null заменяется на isInstanceOf NPE и потом ещё и в половине случаев обрабатывать это не как ошибку, а как ожидаемое отсутствие значения.