Просто прочитав книгу теории категорий и решил применить ее к haskell.
Автор определяет Monoid как:
Моноид - это набор L, снабженный двоичной операцией *: LxL- > L и отмеченным единичным элементом u в L, для которого и т.д.
Взяв структуру "Список" как моноид, ясно, что двоичная операция concat
, а единица - []
.
Но какое здесь множество М?
Я пробовал L = {set of all lists}
, но я думаю, что это приводит меня к неприятностям с "L в L?" вопрос, который, похоже, та же проблема, что и множества.
Или я что-то неправильно думаю?
EDIT: Как указано в @applicative, списки Haskell являются моноидами, называемыми Free monoids!