Естественные случаи появления монад, использующих теоретико-теоретическую структуру


18

Сегодня выступление Хеннинга Керстана («Семантика трассировки для вероятностных систем переходов») впервые поставило меня перед теорией категорий. Он построил теоретическую основу для описания вероятностных систем переходов и их поведения в общем виде, то есть с бесчисленно бесконечными наборами состояний и различными понятиями следов. С этой целью он проходит через несколько уровней абстракции, чтобы в конце концов получить представление о монадах, которые он объединяет с теорией меры, чтобы построить модель, в которой он нуждается.

В конце концов, ему понадобилось 45 минут (примерно), чтобы построить структуру, описывающую концепцию, которую он первоначально объяснил за 5 минут. Я ценю красоту подхода (он делает обобщения красиво более разные понятия о следах) , но это кажется мне странным балансом все же.

Я изо всех сил пытаюсь понять, что на самом деле представляет собой монада и насколько такая общая концепция может быть полезна в приложениях (как в теории, так и на практике). Это действительно стоит усилий, с точки зрения результата?

Поэтому этот вопрос:

Существуют ли естественные проблемы (в смысле CS), к которым может быть применено абстрактное понятие монад, и которые помогают (или даже помогают) получить желаемые результаты (вообще или лучше, чем без)?


2
Кодирование состояний в чисто функциональном языке программирования? Это достаточно естественная проблема CS?
Стефан Гименес

2
Более общая проблема обработки эффектов в функциональных языках - это пример, который я видел чаще всего: для теории монады для эффектов сексуальны, а для практики монада ввода-вывода Haskell очень удобна.
jmad

И какие будут преимущества по сравнению с классической, относительно легкой семантикой? Являются ли FP-монады тем же, что и в теории категорий? Вопросы на вопросы.
Рафаэль

Смотрите этот вопрос на cstheory.SE для более общего вопроса после использования теории категорий.
Рафаэль

Ответы:


6

Спрашивать, является ли возникновение монады естественным , похоже на вопрос, является ли группа (в смысле теории групп) естественной. Как только вы что-то формализуете, в данном случае как эндофунктор, оно удовлетворяет аксиомам монады или нет. Если он удовлетворяет аксиомам, то можно получить много технических средств бесплатно.

Бумага Могги Понятия вычислений и монад в значительной степени заключают сделку: монады невероятно естественны и полезны для унифицированного описания вычислительных эффектов. Wadlerи другие перевели эти понятия, чтобы иметь дело с вычислительными эффектами в функциональных языках программирования, используя связь, что функтор является конструктором типа данных. Это добавляет глазурь на торт. FP-монады позволяют обрабатывать вычислительные эффекты, такие как IO, которые были бы крайне неестественными без них. Монады вдохновили связанные полезные понятия, такие как стрелки и идиомы, которые также очень полезны для структурирования функциональных программ. Смотрите ссылку Wadler для ссылок. FP-монады - это то же самое, что и монады теории категорий в том смысле, что для работы FP-монады должны соблюдаться одни и те же уравнения - компилятор полагается на них. Как правило, представление монады отличается (разные, но эквивалентные операции и уравнения), но это поверхностная разница.

Огромное количество работы Барта Джейкобса , если взять только один пример, использует монады. Много работы проистекает из коалгебры, которая является общей теорией систем. Одним из (многих) вкладов, сделанных Якобсом в эту область, является разработка общего понятия семантики трасс для систем (описываемых как коалгебры), основанных на монадах. Можно утверждать, что понятие семантики трассировки естественно: какова семантика системы? Список действий, которые можно наблюдать!

Один из способов понять монады - это сначала программировать на Хаскеле, используя монады. Тогда найдите один из многих хороших доступных учебников (через Google). Начните с угла программирования, затем перейдите к теоретической стороне, начиная с некоторой базовой теории категорий.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.