1pub fn bluebird<A, B, C, X, Y>(x: X, y: Y, z: C) -> A
3where
4 X: Fn(B) -> A,
5 Y: Fn(C) -> B,
6{
7 x(y(z))
8}
9
10pub fn cardinal<A, X, Y, Z>(x: X, y: Y, z: Z) -> A
12where
13 X: Fn(Z, Y) -> A,
14{
15 x(z, y)
16}
17
18pub fn dove<A, B, X, Y, Z, W>(x: X, y: Y, z: Z, w: W) -> B
20where
21 X: Fn(Y, A) -> B,
22 Z: Fn(W) -> A,
23{
24 x(y, z(w))
25}
26
27pub fn eagle<A, B, X, Y, Z, W, V>(x: X, y: Y, z: Z, w: W, v: V) -> A
29where
30 X: Fn(Y, B) -> A,
31 Z: Fn(W, V) -> B,
32{
33 x(y, z(w, v))
34}
35
36pub fn finch<A, X, Y, Z>(x: X, y: Y, z: Z) -> A
38where
39 Z: Fn(Y, X) -> A,
40{
41 z(y, x)
42}
43
44pub fn goldfinch<A, B, X, Y, Z, W>(x: X, y: Y, z: Z, w: W) -> A
46where
47 X: Fn(W, B) -> A,
48 Y: Fn(Z) -> B,
49{
50 x(w, y(z))
51}
52
53pub fn hummingbird<A, X, Y, Z>(x: X, y: Y, z: Z) -> A
55where
56 X: Fn(Y, Z, Y) -> A,
57 Y: Clone, {
59 x(y.clone(), z, y)
60}
61
62pub fn identity_bird<X>(x: X) -> X {
64 x
65}
66
67pub fn jay<X, Y, Z>(x: X, y: Y, z: Z, w: Y) -> Z
69where
70 X: Fn(Y, Z) -> Z,
71{
72 x(y, x(w, z))
73}
74
75pub fn kestrel<X, Y>(x: X, _y: Y) -> X {
77 x
78}
79
80pub fn lark<A, B, X, Y>(x: X, y: Y) -> A
82where
83 X: Fn(B) -> A,
84 Y: Fn(Y) -> B + Clone,
85{
86 x(y(y.clone()))
87}
88
89pub fn mockingbird<A, X>(x: X) -> A
91where
92 X: Fn(X) -> A + Clone,
93{
94 x(x.clone())
95}
96
97pub fn owl<A, B, X, Y>(x: X, y: Y) -> A
99where
100 X: Fn(Y) -> B,
101 Y: Fn(B) -> A + Clone,
102{
103 y(x(y.clone()))
104}
105
106pub fn queer<A, B, X, Y, Z>(x: X, y: Y, z: Z) -> A
108where
109 X: Fn(Z) -> B,
110 Y: Fn(B) -> A,
111{
112 y(x(z))
113}
114
115pub fn quixotic<A, B, X, Y, Z>(x: X, y: Y, z: Z) -> A
117where
118 X: Fn(B) -> A,
119 Z: Fn(Y) -> B,
120{
121 x(z(y))
122}
123
124pub fn quirky<A, B, X, Y, Z>(x: X, y: Y, z: Z) -> A
126where
127 X: Fn(Y) -> B,
128 Z: Fn(B) -> A,
129{
130 z(x(y))
131}
132
133pub fn robin<A, X, Y, Z>(x: X, y: Y, z: Z) -> A
135where
136 Y: Fn(Z, X) -> A,
137{
138 y(z, x)
139}
140
141pub fn sage<A, X>(x: X) -> A
143where
144 X: Fn(A) -> A + Clone,
145{
146 x(sage(x.clone()))
147}
148
149pub fn starling<A, B, X, Y, Z>(x: X, y: Y, z: Z) -> A
151where
152 X: Fn(Z, B) -> A,
153 Y: Fn(Z) -> B,
154 Z: Clone,
155{
156 x(z.clone(), y(z))
157}
158
159pub fn thrush<A, X, Y>(x: X, y: Y) -> A
161where
162 Y: Fn(X) -> A,
163{
164 y(x)
165}
166
167pub fn turing<A, B, X, Y>(x: X, y: Y) -> A
169where
170 X: Fn(X, Y) -> B + Clone,
171 Y: Fn(B) -> A + Clone,
172{
173 y(x(x.clone(), y.clone()))
174}