Implementing Haskell's Maybe Monad in c++11
I am trying to implement the Maybe monad from Haskell using the lambda functions in C++11 and templates. Here's what I have so far #include<functional> #include<iostream> using namespace std; template<typename T1> struct Maybe { T1 data; bool valid; }; template<typename T1, typename T2> Maybe<T2> operator>>=(Maybe<T1> t, std::function < Maybe<T2> (T1)> &f) { Maybe<T2> return_value; if(t.valid == false) { return_value.valid = false; return return_value; } else { return f(t.data); } } int main() { Maybe<int> x = {5, true}; Maybe<int> y = {29, false}; auto z = [](int a) -> Maybe<int> { Maybe<int>