Существует достаточно много объяснений, что же такое монада, как формальных, так и отсылающих к жизненным аналогиям. В числе последних - буррито. Да, то самое мексиканское блюдо из лепёшки и произвольной начинки.
Проводить подобную параллель пытались далеко не в одной статье, но, пожалуй, один из самых правдопободных вариантов принадлежит Марку Доминусу. Это транслируется в термины Scala следующим образом:
1. Операция pure
: всё, что угодно, мы можем завернуть в лепёшку и получить буррито.
2. Операция map
: не меняя лепёшки, мы можем поменять начинку и остаться с буррито.
3. Операции flatMap
/flatten
: если сделать гигантский буррито, состоящий из вложенных в него буррито, то, последовательно развернув внутренние составляющие и скомбинировав начинки, мы вновь получим буррито.
Для функториальной составляющей есть даже иллюстрация:
>>Click here to continue<<
