|
| 1 | +# fpgen |
| 2 | +*Functional programming in C++ using C++20 coroutines* |
| 3 | + |
| 4 | +## Aim |
| 5 | +`fpgen` aims to bring you an easy-to-use framework for stream programming in C++. Generators can be created, manipulated and lazily aggregated at will using a set of simple functions. Iterators over the generator make it easy to iterate over lazy functions. |
| 6 | + |
| 7 | +## Features |
| 8 | +Currently supported features: |
| 9 | + - Templated generator type with iterators, supporting any coroutine. |
| 10 | + - Commonly used sources: |
| 11 | + - Create generators from `std::` containers with a single type argument, with and without indexing. |
| 12 | + - Create generators from `std::` containers with two type arguments. |
| 13 | + - Create generators from incrementable types (using `operator++(void)`). |
| 14 | + |
| 15 | +Planned/In progress features: |
| 16 | + - Commonly used manipulators: |
| 17 | + - Lazy `map`ping over generators. |
| 18 | + - Lazy `zip`ping of generators. |
| 19 | + - Commonly used aggregators: |
| 20 | + - Lazy `fold`ing of generators. |
| 21 | + - Lazy `sum`ming of generators. |
| 22 | + - Ergonomic improvements: |
| 23 | + - Enable streaming `<<` of generators. |
| 24 | + - Simple structure which allows generator construction, manipulation and aggregation using member functions. |
| 25 | + |
| 26 | +Got another idea? Drop a feature request on the repo. |
| 27 | + |
| 28 | +## Requirements |
| 29 | +This project strongly depends on C++20. For an optimal experience, I recommend GCC version 11.2 or greater. |
| 30 | +For the tests, we rely on Google Test via the Conan package manager, so make sure you have that installed as well. |
| 31 | +To generate coverage reports, we require `gcov`, `lcov` and `genhtml`. |
0 commit comments