Существует очень хорошая презентация и готовящаяся книга от Грегори Мередит по шаблонам монадического дизайна для Интернета. (Также будет серия видео-лекций на эту тему, написанная самим Грегори Мередитом на Channel9 когда-нибудь в ближайшие месяцы.) Вероятно, она не станет более математичной, чем Монады или Теория категорий (именно здесь Монады родом из) в общем.
Другим хорошим примером является тот факт, что интерактивное программирование (и особенно шаблон проектирования итератора) и реактивное программирование (и особенно шаблон проектирования субъекта / наблюдателя) являются теоретическими двойственными понятиями друг друга. Кроме того, оказывается, что шаблон проектирования итератора может быть реализован как экземпляр монады списка, а шаблон проектирования субъекта / наблюдателя может быть реализован как экземпляр монады продолжения. Поскольку обе монады, это в основном означает, что вы можете иметь дело с обоими , используя одинаковые инструменты .
Другими словами, вы можете иметь дело с потоками событий (с которыми обычно трудно иметь дело) так же, как с коллекциями (что каждый уже знает, как это сделать). ). Например, в .NET это означает, что вы можете «запрашивать» потоки событий, используя LINQ, поскольку на самом деле LINQ - это не что иное, как Monad Compiction, выполненные в виде SQL-запросов, так что корпоративные программисты не пугаются громких слов, таких как «Monad» .
И, конечно, веб-программирование - это все о Реактивном программировании. Браузер постоянно генерирует события, на которые вы должны реагировать. И все асинхронные операции ввода-вывода (база данных, файл, вы называете это) - все о запуске вашего запроса ввода-вывода и последующем ожидании события завершения.