[Из песочницы] Монады и do-нотация в C++
В Хаскеле как известно есть монады, а в C++ их нет. Но ничто не мешает реализовать монады в С++. Посмотрим есть ли у нас всё необходимое для их реализации: Передача функции как аргумент в другую функцию — есть. Лямбда-функции — есть, добавлены в C++11. Я не уверен, что они необходимы для реализации монад, но с ними, несомненно, проще. Type classes — нет. В C++ хотели добавить их аналог — концепты, но пока не добавили. Но для реализации монад они не нужны, можно просто перегружать функции или операторы под конкретные монады. do-нотация. В C++ её нет, но для реализации монад она не нужна, хотя и делает их использование гораздо более удобным. Уже есть предложение добавить её аналог в стандарт, но об этом ниже. Читать дальше →