Можно тогда максимально тупой вопрос?
Про аппликативы, функторы, монады.
Я правильно понимаю, что “монада” это всего лишь тип, у которого есть инстанс тайпкласса monad, определяющий байнд/ретурн/юнит/…, и в целом все эти магические слова означают просто присутствие у типа определенных методов работы с ним (в основном по распаковке/запакове значений из/в конструкторы этого типа)?
методы не только определены, но и удовлетворяют некоторым обязательным свойствам. то есть эти методы "определены правильно"