-
Notifications
You must be signed in to change notification settings - Fork 0
/
examples.cxx
62 lines (52 loc) · 1.12 KB
/
examples.cxx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <vector>
#include <list>
#include <iostream>
#include "pipes.hxx"
using namespace pipes;
using namespace std;
void basic()
{
string s =
4
| [](int x){ return vector<string>(x, "muffin"); }
| reduce([](string x, string y) { return x + "\n" + y; });
cout << s << endl;
}
void gross_basic()
{
string s =
reduce( [](string x, string y) { return x + "\n" + y; } )(
vector<string>(4, "muffin")
);
cout << s << endl;
}
void garden()
{
struct Plant { string name; size_t quantity; };
using Landscape = vector<Plant>;
Landscape yard
{
{"tulip", 150},
{"weed", 62},
{"tomato", 47},
{"basil", 55},
{"rose", 15}
};
auto garden =
yard
| filter( [](Plant p){ return p.name == "weed"; } ) //pick the weeds
| map( [](Plant p){ p.quantity *= 1.5; return p; } ) //grow
| map( [](Plant p){
return p.name + "(" + to_string(p.quantity) + ")"; } ) //plant -> str
| reduce( [](string x, string y){ return x + "\n" + y; }) //[str] -> str
;
cout << garden << endl;
}
int main()
{
basic();
cout << endl;
gross_basic();
cout << endl;
garden();
}