| 155 | |
| 156 | === Boost.Functional / Monads === |
| 157 | |
| 158 | Monads are invading the C++ planet. optional/maybe, expected/either, future can be seen all as monads. Containers/Sequences are as well monads and in particular smart pointers can be seen as well as monads. |
| 159 | |
| 160 | Having a common interface for all these monads would help to built on top of monads algorithms. E.g. overloading the usual operators. |
| 161 | |
| 162 | The link Monads in C++ [1] show a way to do it that seems interesting. |
| 163 | |
| 164 | The project would be implemented on C++11 compilers, using any C++11 feature that could make the library easier to prototype. |
| 165 | |
| 166 | Some performance measures comparing using the higher level monads interface and the hand written solution should be provided. |
| 167 | |
| 168 | Functional programming background is a must as well as understanding Monads in Haskelll. |
| 169 | |
| 170 | [1] http://yapb-soc.blogspot.fr/2012/10/monads-in-c.html |
| 171 | |
| 172 | In addition to provide the common interface to some of the Boost monads, the project could add the State monad. |
| 173 | |
| 174 | |
| 175 | |