собственно одной из целей паттернов ООП тоже является возможность парой слов передать смысл такого-то класса/наборов классов, а не показывать всю схему
список - не просто моноид, это свободный моноид, который принимает любой тип и делает из него моноид) Таска моноид не образует же, только если ее ok-результат - моноид
в первой части по моему произведения и копроищведения дольше всего расписывали, с факторизацией, примерами "не универсальных" произведений и так далее, страшная глава
Просто если уж оперируешь моноидами, то не хочется просто слово заимствовать, хочется чтобы оно было элементом языка и хочется тогда уж все базовые вещи теорката понимать