|
Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
|
Unified functional programming for mixed STL/Aleph containers. More...
#include <iostream>#include <iomanip>#include <string>#include <vector>#include <list>#include <deque>#include <tclap/CmdLine.h>#include <htlist.H>#include <tpl_dynArray.H>#include <ah-uni-functional.H>Go to the source code of this file.
Functions | |
| void | print_section (const string &title) |
| void | print_subsection (const string &title) |
| template<typename Container > | |
| void | print_stl (const string &label, const Container &c) |
| template<typename Container > | |
| void | print_aleph (const string &label, const Container &c) |
| void | demo_unified_api () |
| void | demo_map_filter () |
| void | demo_fold_reduce () |
| void | demo_predicates () |
| void | demo_access () |
| void | demo_slicing () |
| void | demo_statistics () |
| void | demo_conversion () |
| void | demo_practical () |
| int | main (int argc, char *argv[]) |
Unified functional programming for mixed STL/Aleph containers.
This program demonstrates ah-uni-functional.H which provides functional programming operations that work with any container type - STL or Aleph. This unified interface eliminates the need to remember different APIs for different container types.
Different container libraries have different APIs:
std::transform, std::find_if, etc.maps(), filter(), etc.ah-uni-functional.H provides unified functions that:
uni_map()**: Transform each elementuni_mapi()**: Transform with indexuni_filter()**: Keep elements satisfying predicateuni_filteri()**: Filter with indexuni_foldl()**: Left fold (reduce from left)uni_reduce()**: Alias for foldluni_sum()**: Sum all numeric elementsuni_product()**: Multiply all numeric elementsuni_all()**: All elements satisfy predicate?uni_exists()**: At least one satisfies?uni_none()**: None satisfy?uni_mem()**: Membership test (contains?)uni_first()**: Get first elementuni_last()**: Get last elementuni_nth()**: Get n-th elementuni_find()**: Find first satisfying predicateuni_find_mapi()**: Find with indexuni_take(n)**: Take first n elementsuni_drop(n)**: Skip first n elementsuni_take_while()**: Take while predicate trueuni_drop_while()**: Drop while predicate trueuni_min()**: Find minimum elementuni_max()**: Find maximum elementuni_min_max()**: Find both min and maxuni_count()**: Count elementsuni_length()**: Get container size| Feature | STL | Aleph-w | Unified |
|---|---|---|---|
| Container support | STL only | Aleph only | Both |
| API consistency | Different | Different | Same |
| Mix containers | No | No | Yes |
| Type detection | Manual | Manual | Automatic |
Definition in file uni_functional_example.C.
| void demo_access | ( | ) |
Definition at line 373 of file uni_functional_example.C.
References Aleph::maps(), print_aleph(), print_section(), print_subsection(), Aleph::uni_find(), Aleph::uni_first(), Aleph::uni_last(), Aleph::uni_length(), and Aleph::uni_nth().
Referenced by main().
| void demo_conversion | ( | ) |
Definition at line 487 of file uni_functional_example.C.
References Aleph::maps(), print_aleph(), print_section(), print_stl(), print_subsection(), Aleph::uni_filter(), Aleph::uni_map(), and Aleph::uni_to_vector().
Referenced by main().
| void demo_fold_reduce | ( | ) |
Definition at line 287 of file uni_functional_example.C.
References Aleph::DynList< T >::get_first(), Aleph::maps(), print_aleph(), print_section(), print_subsection(), Aleph::product(), Aleph::sum(), Aleph::uni_foldl(), Aleph::uni_product(), and Aleph::uni_sum().
Referenced by main().
| void demo_map_filter | ( | ) |
Definition at line 247 of file uni_functional_example.C.
References Aleph::maps(), print_section(), print_stl(), print_subsection(), Aleph::to_string(), Aleph::uni_filter(), Aleph::uni_filteri(), Aleph::uni_map(), and Aleph::uni_mapi().
Referenced by main().
| void demo_practical | ( | ) |
Definition at line 512 of file uni_functional_example.C.
References Aleph::maps(), print_section(), print_stl(), print_subsection(), Aleph::HTList::size(), Aleph::uni_length(), Aleph::uni_max(), Aleph::uni_sum(), and Aleph::uni_to_vector().
Referenced by main().
| void demo_predicates | ( | ) |
Definition at line 326 of file uni_functional_example.C.
References Aleph::maps(), print_section(), print_stl(), print_subsection(), Aleph::uni_all(), Aleph::uni_any(), Aleph::uni_count(), Aleph::uni_exists(), Aleph::uni_mem(), and Aleph::uni_none().
Referenced by main().
| void demo_slicing | ( | ) |
Definition at line 413 of file uni_functional_example.C.
References Aleph::maps(), print_section(), print_stl(), print_subsection(), Aleph::uni_drop(), Aleph::uni_drop_while(), Aleph::uni_partition(), Aleph::uni_take(), and Aleph::uni_take_while().
Referenced by main().
| void demo_statistics | ( | ) |
Definition at line 451 of file uni_functional_example.C.
References Aleph::count(), Aleph::maps(), print_aleph(), print_section(), print_subsection(), Aleph::uni_foldl(), Aleph::uni_length(), Aleph::uni_max(), Aleph::uni_min(), and Aleph::uni_min_max().
Referenced by main().
| void demo_unified_api | ( | ) |
Definition at line 205 of file uni_functional_example.C.
References Aleph::maps(), print_aleph(), print_section(), print_stl(), print_subsection(), Aleph::uni_foldl(), and Aleph::uni_map().
Referenced by main().
| int main | ( | int | argc, |
| char * | argv[] | ||
| ) |
Definition at line 574 of file uni_functional_example.C.
References demo_access(), demo_conversion(), demo_fold_reduce(), demo_map_filter(), demo_practical(), demo_predicates(), demo_slicing(), demo_statistics(), demo_unified_api(), and Aleph::maps().
Definition at line 188 of file uni_functional_example.C.
References Aleph::maps().
Referenced by demo_access(), demo_conversion(), demo_fold_reduce(), demo_statistics(), and demo_unified_api().
| void print_section | ( | const string & | title | ) |
Definition at line 161 of file uni_functional_example.C.
References Aleph::maps().
Referenced by demo_access(), demo_conversion(), demo_fold_reduce(), demo_map_filter(), demo_practical(), demo_predicates(), demo_slicing(), demo_statistics(), and demo_unified_api().
Definition at line 174 of file uni_functional_example.C.
References Aleph::maps().
Referenced by demo_conversion(), demo_map_filter(), demo_practical(), demo_predicates(), demo_slicing(), and demo_unified_api().
| void print_subsection | ( | const string & | title | ) |
Definition at line 168 of file uni_functional_example.C.
References Aleph::maps().
Referenced by demo_access(), demo_conversion(), demo_fold_reduce(), demo_map_filter(), demo_practical(), demo_predicates(), demo_slicing(), demo_statistics(), and demo_unified_api().