| | 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 | |