Монада: Какое значение имеет Идентичность, что произойдет, если в наборе не будет такого специального члена?

Я пытаюсь понять концепцию monad, смотрю это отличное видео, Брайан Бекенд пытается объяснить, что такое монада.

Когда он говорит о monoid, это набор типов, у него есть правило композиции, и эта композиция должна подчиняться 2 правилам:

  1. ассоциативный: x @ (y @ z ) = (x @ y) @ z
  2. особый участник в коллекции: x @ id = x and id @ x = x

Я использую символ @, представляющий композицию. id означает специальный член.

Второй момент - это то, что я пытаюсь понять. почему это важно? что, если нет такого специального члена?

Когда я изучаю новую концепцию, я всегда стараюсь связать эти абстрактные концепции с некоторыми другими конкретными вещами, чтобы я мог полностью понять и выучить их наизусть.

Итак, я пытаюсь связать monad и monoid с lego. Таким образом, все строительные блоки в наборе лего образуют коллекцию. и правило композиции объединяет их в новую форму строительных блоков. и очевидно, что композиция подчиняется первому правилу: ассоциативность. Но нет специального строительного блока, который можно скомпоновать с другим строительным блоком и получить то же самое. Таким образом, он не подчиняется второму правилу.

Но лего по-прежнему очень компонуем. Чего не хватает или чего не хватает, когда LEGO не подчиняется второму правилу? Каковы последствия?
Или, скажем так, по сравнению с другими monoid, которые подчиняются всем этим правилам. Какая особенность есть у других monoid, но нет у лего?


person Aaron Shen    schedule 25.02.2016    source источник


Ответы (2)


monoid без элемента идентификации называется semigroup, и это все еще прекрасная и полезная конструкция. Это просто дает нам что-то другое. Рассмотрим, например, fold в списке. Мы можем сделать это, сопоставив каждый элемент списка с моноидом, а затем скомпоновав их все. Но если у вас есть только полугруппа, вы не можете fold в возможно пустом списке.

Рассмотрим другой пример — целые числа больше нуля по сравнению с целыми числами больше или равными нулю. В последнем случае у нас есть моноид, так как ноль буквально является нашим нулевым элементом. Так что я могу решить, например, уравнение «5 + x = 5». В первом случае с полугруппой я не могу решить это уравнение. Или я могу сказать "у тебя нет яблок, тогда я даю тебе пять яблок, сколько у тебя есть?" В мире без нуля мы должны исходить из того, что все начинают с нескольких яблок! Таким образом, по тем же причинам, по которым важно иметь ноль рядом с числами, удобно иметь «обобщенный ноль» с более абстрактными алгебраическими структурами.

(Обратите внимание, что это не означает, что тот или иной «лучше» — просто они разные, и дополнительная структура, если она доступна, может пригодиться. Также обратите внимание, что существует универсальный способ превратить полугруппу в monoid путем добавления нулевого элемента, так что, поскольку все результаты полугруппы превращаются в «завершенные» результаты для моноидов, как правило, удобнее просто рассматривать вещи с точки зрения последних.)

person sclv    schedule 19.03.2016

Пустой Lego можно рассматривать как id, но тогда вам придется признать, что пустое место — это Lego. Но да, если вам не нужен идентификатор, как написал @sclv, это будет semigroup.

person Bassel Mabsout    schedule 26.06.2016