Mar. 16th, 2023

yigal_s: (Default)
Тут пришла в голову мысль, что известные решения проблеммы спагеттизации асинхронного кода (написанного с callbacks/continuations/futures) приносят некоторые дополнительные изначально не очевидные проблемы.

Сценарий - коммуникация с сервером. В исходном варианте (со спагетти), имеем что-то вроде

SendRequest(request, processReplyFunction);

где processReplyFunction - функция, которая будет вызывана при получении ответа. Ну, там, это может быть не просто функция, а объект класса у которого вызовется виртуальная функция, или лямбда, всё что угодно, что можно вызывать и передать Reply - не суть.

И когда код превращается в череду вызовов таких колбеков - поддерживать его выходит сложновато.

Решение данной проблемы с помощью монадRead more... )