sab123: (face)
[personal profile] sab123
С подачи http://ivan-gandhi.livejournal.com/2800521.html пошел прочитал википедию про монады. Она оказалась на удивление читаемой. Так вот, краткий пересказ, кто такие монады: Они как бы переизобрели две вещи (и обе - несколько раком):

1. Конвейер (pipeline) с передачей данных между ступенями, в котором один элемент данных на входе ступени может плодить несколько элементов данных на ее выходе (в этом смысле он аналогичен юниксному или скорее пауэршелловскому конвейеру).

2. Исключения (exceptions) - каждая ступень может бросить исключение на обработку элемента данных, и тогда все последующие элементы конвейера пропустятся, а на выход доедет только исключение. Все проблемы обычных исключений полностью присутствуют и в монадическом варианте.

То, как они присваивают в этом конвейере переменные, совершенно соответствует идее, которую я сам по себе придумал в области CEP (Complex Event Processing) - что элемент данных, несомых через конвейер (в CEP это обычно реляционная строка), представляет собой block scope. Но, насколько я понимаю, в монадах все сильно упрощено, поскольку в них элементы конвейера не имеют статического состояния, а только чисто обрабатывают входящие данные (это избегает проблем в ромбовидных топологиях), а так же отсутствуют циклы в топологии конвейеров. Это в частности потому, что конвейер им неинтересен как способ распараллеливания вычислений, а интересен в первую очередь как черезжопный способ бросания исключений.

Пользуясь случаем, не могу не указать на то, что я придумал подобную, но более интересную штуку в мире CEP: http://babkin-cep.blogspot.com/2012/09/streaming-functions-introduction.html

P.S. Учет и контроль:
Locations of visitors to this page

January 2026

S M T W T F S
     12 3
45 6 7 8 9 10
11 12 13 14 151617
1819202122 23 24
25 262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 27th, 2026 06:35 pm
Powered by Dreamwidth Studios