Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- template<typename T>
- class Monad {
- public:
- Monad(T val) {
- this->val = val;
- }
- T ret() {
- return Monad<T>(this->val);
- }
- Monad<T> bind(Monad<T> (*callback)(T)) {
- return callback(this->val);
- }
- T val;
- };
- int main() {
- Monad<int> test(1);
- Monad<int> res1 = test.bind([](int r) {
- return Monad<int>(r + 1);
- });
- Monad<int> res2 = res1.bind([](int r) {
- cout << r;
- return Monad<int>(r);
- });
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement