Я знаком с монадами в теории категорий (это очень простая концепция, на самом деле), но >>=
функция в Haskell полностью озадачивает меня. Итак, применение bind к значению M a
и функции a -> M u
- это то же самое, что сначала применить монаду к этой функции, затем оценить ее по указанному значению и умножить результат: a >>= f
- это то же самое, что join $ (fmap f) $ a
. Но насколько это естественное описание вычислений? Есть ли какой-то полезный способ взглянуть на это, который поможет мне понять это?
Есть ли где-нибудь хорошая статья, которая не ориентирована на новичка в джунглях C++?