C++ で Maybeモナドを書いてみたら意外と面白かったので覚書。 まぁこの手のネタはたくさんあると思いますが。 あんまり Haskell 力は高くないのでざっくりとした実装です。 [実装する主な機能] maybe nothing return bind(>>=) 今回はここら辺の機能を C++ で実装してみました。 [maybe と return] maybe 自体は同等の機能を持つ Boost.Optional で代用。 nothing も boost::none ですね。 template<typename T> using maybe = boost::optional<T>; constexpr auto const& nothing = boost::none; template<typename T> maybe<T> return_(T t){ return t; } m