Skip to content

Commit 45a1eb5

Browse files
committed
README
1 parent 05d5353 commit 45a1eb5

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
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

Comments
 (0)