Информация об изменениях

Сообщение Re[3]: Монады - пример где бы были полезны... от 29.08.2019 21:19

Изменено 29.08.2019 22:25 Poopy Joe

Re[3]: Монады - пример где бы были полезны...
Здравствуйте, takTak, Вы писали:

J>>Бывает, но в haskel'е. Для того, чтоб монады были полезны на практике нужен high kinded polimorphism, которого в жаба-шарпах нету


T>а можно как-то поподробнее и "на пальцах"?


На практике это утверждение выше неверно. В шарпе есть линк, который монада и который вполне себе полезен. high kinded polimorphism позволяет определенные вещи (трансформеры например), недоступные в других языках, но совершенно не является чем-то критическим.

T>допустим, в яве -шарпах, мне не нравится такой код

Такой код к монадам отношение имеет довольно слабое. Ключевой оператор у монады это bind.


T>
T>if (a != null)
T>            {
T>                if (a.Prop1 != null)
T>                {
                    
T>                }
T>            }
T>

T>с помощью Maybe / Option / Either- монад его можно переписать во что-то более удобочитаемое,
Тут даже вопрос не только в читаемости, которой в примере спагетти года нет вообще. Проблема в том, null не имеет типа. У maybe и either он есть.
Re[3]: Монады - пример где бы были полезны...
Здравствуйте, takTak, Вы писали:

J>>Бывает, но в haskel'е. Для того, чтоб монады были полезны на практике нужен high kinded polimorphism, которого в жаба-шарпах нету


T>а можно как-то поподробнее и "на пальцах"?


На практике это утверждение выше неверно. В шарпе есть линк, который монада и который вполне себе полезен. high kinded polimorphism позволяет определенные вещи (трансформеры например), недоступные в других языках, но совершенно не является чем-то критическим.

T>допустим, в яве -шарпах, мне не нравится такой код

Такой код к монадам отношение имеет довольно слабое. Ключевой оператор у монады это bind.


T>
T>if (a != null)
T>            {
T>                if (a.Prop1 != null)
T>                {
                    
T>                }
T>            }
T>

T>с помощью Maybe / Option / Either- монад его можно переписать во что-то более удобочитаемое,
Тут даже вопрос не только в читаемости, которой в примере спагетти-кода нет вообще. Проблема в том, null не имеет типа. У maybe и either он есть.