Advertisement
konalisp

monad.cxx

Sep 28th, 2015
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.49 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template<typename T>
  5. class Monad {
  6. public:
  7.     Monad(T val) {
  8.         this->val = val;
  9.     }
  10.    
  11.     T ret() {
  12.         return Monad<T>(this->val);
  13.     }
  14.    
  15.     Monad<T> bind(Monad<T> (*callback)(T)) {
  16.         return callback(this->val);
  17.     }
  18.    
  19.     T val;
  20. };
  21.  
  22. int main() {
  23.     Monad<int> test(1);
  24.    
  25.     Monad<int> res1 = test.bind([](int r) {
  26.         return Monad<int>(r + 1);
  27.     });
  28.    
  29.     Monad<int> res2 = res1.bind([](int r) {
  30.         cout << r;
  31.         return Monad<int>(r);
  32.     });
  33.    
  34.     return 0;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement