2016-02-25 1 views
1

Читая документацию Control.Monad я нашел такое описание mapM:Что означает «монадическая структура» и «элемент структуры» именно в контексте произвольной монады?

сопоставьте каждый элемент структуры монадических действий, оценить эти действия слева направо, и собирать результаты

Мне интересно, что означает «элемент структуры» для произвольной монады? Например, State или IO монада? Какая структура? Я знаю, что mapM функция делает и интересует больше в семантика данного слова в описании mapM. Связана ли эта «структура» с понятием «алгебраическая структура»?

Структура представляет собой набор с одной или несколькими финитными операциями, определенными на нем, которые удовлетворяют списку аксиом.

Если да, то каковы элементы этой структуры (набор носителей), как я просил, например. IO монада? В целом?

ответ

8

«Элемент структуры» означает абсолютно ничего для произвольной монады, поскольку он не ссылается на монаду. mapM Вы имеете в виду член Traversable typeclass, а структура, на которую он ссылается, - Traversable. A Traversable - это структура данных, которая может быть сопоставлена, например, список или дерево. Элемент структуры относится к элементам списка.

4

«Структура» здесь представляет собой экземпляр класса Traversable (т. Е. Конструктор типа t в подписи mapM).