annotate src/main/java/fj/data/Conversions.java @ 0:fe80c1edf1be

add getLoop
author tatsuki
date Fri, 20 Mar 2015 21:04:03 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
1 package fj.data;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
2
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
3 import fj.F;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
4 import fj.P1;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
5 import fj.Unit;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
6 import fj.function.TryEffect0;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
7 import fj.function.Effect0;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
8 import fj.function.Effect1;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
9
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
10 import fj.Try;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
11 import fj.TryEffect;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
12 import fj.Effect;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
13 import fj.function.Try0;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
14 import fj.function.Try1;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
15
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
16 import java.io.IOException;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
17 import static fj.Unit.unit;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
18 import static fj.data.List.asString;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
19 import static fj.data.List.fromString;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
20
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
21 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
22 * Functions that convert between data structure types.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
23 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
24 * @version %build.number%
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
25 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
26 public final class Conversions {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
27 private Conversions() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
28 throw new UnsupportedOperationException();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
29 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
30
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
31 // BEGIN List ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
32
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
33 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
34 * A function that converts lists to arrays.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
35 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
36 * @return A function that converts lists to arrays.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
37 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
38 public static <A> F<List<A>, Array<A>> List_Array() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
39 return new F<List<A>, Array<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
40 public Array<A> f(final List<A> as) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
41 return as.toArray();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
42 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
43 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
44 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
45
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
46 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
47 * A function that converts lists to streams.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
48 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
49 * @return A function that converts lists to streams.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
50 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
51 public static <A> F<List<A>, Stream<A>> List_Stream() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
52 return new F<List<A>, Stream<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
53 public Stream<A> f(final List<A> as) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
54 return as.toStream();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
55 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
56 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
57 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
58
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
59 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
60 * A function that converts lists to options.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
61 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
62 * @return A function that converts lists to options.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
63 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
64 public static <A> F<List<A>, Option<A>> List_Option() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
65 return new F<List<A>, Option<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
66 public Option<A> f(final List<A> as) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
67 return as.toOption();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
68 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
69 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
70 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
71
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
72 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
73 * A function that converts lists to eithers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
74 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
75 * @return A function that converts lists to eithers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
76 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
77 public static <A, B> F<P1<A>, F<List<B>, Either<A, B>>> List_Either() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
78 return new F<P1<A>, F<List<B>, Either<A, B>>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
79 public F<List<B>, Either<A, B>> f(final P1<A> a) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
80 return new F<List<B>, Either<A, B>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
81 public Either<A, B> f(final List<B> bs) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
82 return bs.toEither(a);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
83 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
84 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
85 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
86 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
87 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
88
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
89 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
90 * A function that converts lists to strings.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
91 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
92 public static final F<List<Character>, String> List_String = new F<List<Character>, String>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
93 public String f(final List<Character> cs) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
94 return asString(cs);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
95 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
96 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
97
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
98 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
99 * A function that converts lists to string buffers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
100 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
101 public static final F<List<Character>, StringBuffer> List_StringBuffer = new F<List<Character>, StringBuffer>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
102 public StringBuffer f(final List<Character> cs) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
103 return new StringBuffer(asString(cs));
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
104 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
105 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
106
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
107 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
108 * A function that converts lists to string builders.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
109 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
110 public static final F<List<Character>, StringBuilder> List_StringBuilder = new F<List<Character>, StringBuilder>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
111 public StringBuilder f(final List<Character> cs) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
112 return new StringBuilder(asString(cs));
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
113 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
114 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
115
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
116 // END List ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
117
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
118 // BEGIN Array ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
119
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
120 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
121 * A function that converts arrays to lists.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
122 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
123 * @return A function that converts arrays to lists.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
124 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
125 public static <A> F<Array<A>, List<A>> Array_List() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
126 return new F<Array<A>, List<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
127 public List<A> f(final Array<A> as) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
128 return as.toList();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
129 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
130 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
131 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
132
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
133 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
134 * A function that converts arrays to streams.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
135 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
136 * @return A function that converts arrays to streams.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
137 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
138 public static <A> F<Array<A>, Stream<A>> Array_Stream() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
139 return new F<Array<A>, Stream<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
140 public Stream<A> f(final Array<A> as) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
141 return as.toStream();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
142 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
143 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
144 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
145
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
146 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
147 * A function that converts arrays to options.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
148 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
149 * @return A function that converts arrays to options.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
150 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
151 public static <A> F<Array<A>, Option<A>> Array_Option() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
152 return new F<Array<A>, Option<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
153 public Option<A> f(final Array<A> as) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
154 return as.toOption();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
155 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
156 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
157 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
158
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
159 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
160 * A function that converts arrays to eithers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
161 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
162 * @return A function that converts arrays to eithers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
163 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
164 public static <A, B> F<P1<A>, F<Array<B>, Either<A, B>>> Array_Either() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
165 return new F<P1<A>, F<Array<B>, Either<A, B>>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
166 public F<Array<B>, Either<A, B>> f(final P1<A> a) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
167 return new F<Array<B>, Either<A, B>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
168 public Either<A, B> f(final Array<B> bs) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
169 return bs.toEither(a);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
170 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
171 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
172 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
173 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
174 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
175
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
176 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
177 * A function that converts arrays to strings.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
178 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
179 public static final F<Array<Character>, String> Array_String = new F<Array<Character>, String>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
180 public String f(final Array<Character> cs) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
181 final StringBuilder sb = new StringBuilder();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
182 cs.foreachDoEffect(new Effect1<Character>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
183 public void f(final Character c) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
184 sb.append(c);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
185 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
186 });
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
187 return sb.toString();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
188 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
189 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
190
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
191 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
192 * A function that converts arrays to string buffers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
193 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
194 public static final F<Array<Character>, StringBuffer> Array_StringBuffer = new F<Array<Character>, StringBuffer>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
195 public StringBuffer f(final Array<Character> cs) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
196 final StringBuffer sb = new StringBuffer();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
197 cs.foreachDoEffect(new Effect1<Character>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
198 public void f(final Character c) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
199 sb.append(c);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
200 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
201 });
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
202 return sb;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
203 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
204 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
205
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
206 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
207 * A function that converts arrays to string builders.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
208 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
209 public static final F<Array<Character>, StringBuilder> Array_StringBuilder =
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
210 new F<Array<Character>, StringBuilder>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
211 public StringBuilder f(final Array<Character> cs) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
212 final StringBuilder sb = new StringBuilder();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
213 cs.foreachDoEffect((Character c) -> sb.append(c));
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
214 return sb;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
215 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
216 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
217
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
218 // END Array ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
219
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
220 // BEGIN Stream ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
221
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
222 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
223 * A function that converts streams to lists.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
224 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
225 * @return A function that converts streams to lists.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
226 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
227 public static <A> F<Stream<A>, List<A>> Stream_List() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
228 return new F<Stream<A>, List<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
229 public List<A> f(final Stream<A> as) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
230 return as.toList();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
231 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
232 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
233 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
234
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
235 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
236 * A function that converts streams to arrays.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
237 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
238 * @return A function that converts streams to arrays.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
239 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
240 public static <A> F<Stream<A>, Array<A>> Stream_Array() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
241 return new F<Stream<A>, Array<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
242 public Array<A> f(final Stream<A> as) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
243 return as.toArray();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
244 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
245 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
246 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
247
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
248 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
249 * A function that converts streams to options.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
250 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
251 * @return A function that converts streams to options.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
252 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
253 public static <A> F<Stream<A>, Option<A>> Stream_Option() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
254 return new F<Stream<A>, Option<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
255 public Option<A> f(final Stream<A> as) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
256 return as.toOption();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
257 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
258 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
259 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
260
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
261 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
262 * A function that converts streams to eithers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
263 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
264 * @return A function that converts streams to eithers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
265 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
266 public static <A, B> F<P1<A>, F<Stream<B>, Either<A, B>>> Stream_Either() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
267 return new F<P1<A>, F<Stream<B>, Either<A, B>>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
268 public F<Stream<B>, Either<A, B>> f(final P1<A> a) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
269 return new F<Stream<B>, Either<A, B>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
270 public Either<A, B> f(final Stream<B> bs) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
271 return bs.toEither(a);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
272 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
273 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
274 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
275 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
276 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
277
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
278 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
279 * A function that converts streams to strings.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
280 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
281 public static final F<Stream<Character>, String> Stream_String = new F<Stream<Character>, String>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
282 public String f(final Stream<Character> cs) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
283 final StringBuilder sb = new StringBuilder();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
284 cs.foreachDoEffect((Character c) -> sb.append(c));
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
285 return sb.toString();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
286 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
287 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
288
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
289 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
290 * A function that converts streams to string buffers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
291 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
292 public static final F<Stream<Character>, StringBuffer> Stream_StringBuffer =
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
293 new F<Stream<Character>, StringBuffer>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
294 public StringBuffer f(final Stream<Character> cs) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
295 final StringBuffer sb = new StringBuffer();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
296 cs.foreachDoEffect((Character c) -> sb.append(c));
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
297 return sb;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
298 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
299 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
300
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
301 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
302 * A function that converts streams to string builders.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
303 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
304 public static final F<Stream<Character>, StringBuilder> Stream_StringBuilder =
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
305 new F<Stream<Character>, StringBuilder>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
306 public StringBuilder f(final Stream<Character> cs) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
307 final StringBuilder sb = new StringBuilder();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
308 cs.foreachDoEffect((Character c) -> sb.append(c));
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
309 return sb;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
310 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
311 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
312
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
313 // END Stream ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
314
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
315 // BEGIN Option ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
316
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
317 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
318 * A function that converts options to lists.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
319 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
320 * @return A function that converts options to lists.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
321 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
322 public static <A> F<Option<A>, List<A>> Option_List() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
323 return new F<Option<A>, List<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
324 public List<A> f(final Option<A> o) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
325 return o.toList();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
326 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
327 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
328 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
329
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
330 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
331 * A function that converts options to arrays.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
332 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
333 * @return A function that converts options to arrays.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
334 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
335 public static <A> F<Option<A>, Array<A>> Option_Array() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
336 return new F<Option<A>, Array<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
337 public Array<A> f(final Option<A> o) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
338 return o.toArray();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
339 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
340 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
341 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
342
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
343 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
344 * A function that converts options to streams.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
345 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
346 * @return A function that converts options to streams.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
347 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
348 public static <A> F<Option<A>, Stream<A>> Option_Stream() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
349 return new F<Option<A>, Stream<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
350 public Stream<A> f(final Option<A> o) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
351 return o.toStream();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
352 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
353 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
354 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
355
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
356 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
357 * A function that converts options to eithers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
358 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
359 * @return A function that converts options to eithers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
360 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
361 public static <A, B> F<P1<A>, F<Option<B>, Either<A, B>>> Option_Either() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
362 return new F<P1<A>, F<Option<B>, Either<A, B>>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
363 public F<Option<B>, Either<A, B>> f(final P1<A> a) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
364 return new F<Option<B>, Either<A, B>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
365 public Either<A, B> f(final Option<B> o) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
366 return o.toEither(a);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
367 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
368 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
369 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
370 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
371 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
372
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
373 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
374 * A function that converts options to strings.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
375 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
376 public static final F<Option<Character>, String> Option_String = new F<Option<Character>, String>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
377 public String f(final Option<Character> o) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
378 return asString(o.toList());
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
379 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
380 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
381
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
382 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
383 * A function that converts options to string buffers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
384 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
385 public static final F<Option<Character>, StringBuffer> Option_StringBuffer =
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
386 new F<Option<Character>, StringBuffer>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
387 public StringBuffer f(final Option<Character> o) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
388 return new StringBuffer(asString(o.toList()));
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
389 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
390 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
391
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
392 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
393 * A function that converts options to string builders.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
394 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
395 public static final F<Option<Character>, StringBuilder> Option_StringBuilder =
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
396 new F<Option<Character>, StringBuilder>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
397 public StringBuilder f(final Option<Character> o) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
398 return new StringBuilder(asString(o.toList()));
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
399 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
400 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
401
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
402 // END Option ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
403
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
404 // BEGIN Effect
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
405
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
406 public static F<Effect0, P1<Unit>> Effect0_P1() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
407 return e -> Effect0_P1(e);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
408 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
409
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
410 public static P1<Unit> Effect0_P1(Effect0 e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
411 return Effect.f(e);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
412 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
413
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
414 public static <A> F<A, Unit> Effect1_F(Effect1<A> e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
415 return Effect.f(e);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
416 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
417
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
418 public static <A> F<Effect1<A>, F<A, Unit>> Effect1_F() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
419 return e -> Effect1_F(e);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
420 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
421
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
422 public static IO<Unit> Effect_IO(Effect0 e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
423 return () ->{
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
424 e.f();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
425 return Unit.unit();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
426 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
427 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
428
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
429 public static F<Effect0, IO<Unit>> Effect_IO() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
430 return e -> Effect_IO(e);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
431 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
432
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
433 public static SafeIO<Unit> Effect_SafeIO(Effect0 e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
434 return () -> {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
435 e.f();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
436 return unit();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
437 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
438 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
439
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
440 public static F<Effect0, SafeIO<Unit>> Effect_SafeIO() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
441 return e -> Effect_SafeIO(e);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
442 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
443
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
444 // END Effect
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
445
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
446 // BEGIN Either ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
447
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
448 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
449 * A function that converts eithers to lists.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
450 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
451 * @return A function that converts eithers to lists.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
452 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
453 public static <A, B> F<Either<A, B>, List<A>> Either_ListA() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
454 return new F<Either<A, B>, List<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
455 public List<A> f(final Either<A, B> e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
456 return e.left().toList();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
457 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
458 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
459 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
460
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
461 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
462 * A function that converts eithers to lists.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
463 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
464 * @return A function that converts eithers to lists.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
465 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
466 public static <A, B> F<Either<A, B>, List<B>> Either_ListB() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
467 return new F<Either<A, B>, List<B>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
468 public List<B> f(final Either<A, B> e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
469 return e.right().toList();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
470 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
471 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
472 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
473
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
474 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
475 * A function that converts eithers to arrays.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
476 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
477 * @return A function that converts eithers to arrays.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
478 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
479 public static <A, B> F<Either<A, B>, Array<A>> Either_ArrayA() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
480 return new F<Either<A, B>, Array<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
481 public Array<A> f(final Either<A, B> e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
482 return e.left().toArray();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
483 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
484 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
485 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
486
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
487 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
488 * A function that converts eithers to arrays.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
489 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
490 * @return A function that converts eithers to arrays.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
491 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
492 public static <A, B> F<Either<A, B>, Array<B>> Either_ArrayB() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
493 return new F<Either<A, B>, Array<B>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
494 public Array<B> f(final Either<A, B> e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
495 return e.right().toArray();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
496 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
497 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
498 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
499
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
500 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
501 * A function that converts eithers to streams.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
502 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
503 * @return A function that converts eithers to streams.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
504 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
505 public static <A, B> F<Either<A, B>, Stream<A>> Either_StreamA() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
506 return new F<Either<A, B>, Stream<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
507 public Stream<A> f(final Either<A, B> e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
508 return e.left().toStream();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
509 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
510 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
511 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
512
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
513 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
514 * A function that converts eithers to streams.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
515 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
516 * @return A function that converts eithers to streams.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
517 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
518 public static <A, B> F<Either<A, B>, Stream<B>> Either_StreamB() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
519 return new F<Either<A, B>, Stream<B>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
520 public Stream<B> f(final Either<A, B> e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
521 return e.right().toStream();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
522 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
523 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
524 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
525
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
526 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
527 * A function that converts eithers to options.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
528 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
529 * @return A function that converts eithers to options.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
530 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
531 public static <A, B> F<Either<A, B>, Option<A>> Either_OptionA() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
532 return new F<Either<A, B>, Option<A>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
533 public Option<A> f(final Either<A, B> e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
534 return e.left().toOption();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
535 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
536 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
537 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
538
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
539 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
540 * A function that converts eithers to options.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
541 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
542 * @return A function that converts eithers to options.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
543 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
544 public static <A, B> F<Either<A, B>, Option<B>> Either_OptionB() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
545 return new F<Either<A, B>, Option<B>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
546 public Option<B> f(final Either<A, B> e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
547 return e.right().toOption();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
548 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
549 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
550 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
551
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
552 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
553 * A function that converts eithers to strings.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
554 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
555 * @return A function that converts eithers to strings.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
556 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
557 public static <B> F<Either<Character, B>, String> Either_StringA() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
558 return new F<Either<Character, B>, String>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
559 public String f(final Either<Character, B> e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
560 return asString(e.left().toList());
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
561 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
562 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
563 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
564
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
565 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
566 * A function that converts eithers to strings.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
567 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
568 * @return A function that converts eithers to strings.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
569 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
570 public static <A> F<Either<A, Character>, String> Either_StringB() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
571 return new F<Either<A, Character>, String>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
572 public String f(final Either<A, Character> e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
573 return asString(e.right().toList());
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
574 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
575 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
576 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
577
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
578 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
579 * A function that converts eithers to string buffers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
580 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
581 * @return A function that converts eithers to string buffers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
582 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
583 public static <B> F<Either<Character, B>, StringBuffer> Either_StringBufferA() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
584 return new F<Either<Character, B>, StringBuffer>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
585 public StringBuffer f(final Either<Character, B> e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
586 return new StringBuffer(asString(e.left().toList()));
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
587 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
588 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
589 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
590
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
591 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
592 * A function that converts eithers to string buffers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
593 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
594 * @return A function that converts eithers to string buffers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
595 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
596 public static <A> F<Either<A, Character>, StringBuffer> Either_StringBufferB() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
597 return new F<Either<A, Character>, StringBuffer>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
598 public StringBuffer f(final Either<A, Character> e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
599 return new StringBuffer(asString(e.right().toList()));
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
600 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
601 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
602 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
603
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
604 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
605 * A function that converts eithers to string builders.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
606 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
607 * @return A function that converts eithers to string builders.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
608 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
609 public static <B> F<Either<Character, B>, StringBuilder> Either_StringBuilderA() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
610 return new F<Either<Character, B>, StringBuilder>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
611 public StringBuilder f(final Either<Character, B> e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
612 return new StringBuilder(asString(e.left().toList()));
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
613 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
614 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
615 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
616
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
617 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
618 * A function that converts eithers to string builders.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
619 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
620 * @return A function that converts eithers to string builders.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
621 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
622 public static <A> F<Either<A, Character>, StringBuilder> Either_StringBuilderB() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
623 return new F<Either<A, Character>, StringBuilder>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
624 public StringBuilder f(final Either<A, Character> e) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
625 return new StringBuilder(asString(e.right().toList()));
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
626 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
627 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
628 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
629
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
630 // END Either ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
631
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
632 // BEGIN F
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
633
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
634 public static <A> SafeIO<A> F_SafeIO(F<Unit, A> f) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
635 return () -> f.f(unit());
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
636 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
637
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
638 public static <A> F<F<Unit, A>, SafeIO<A>> F_SafeIO() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
639 return f -> F_SafeIO(f);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
640 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
641
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
642 // END F
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
643
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
644 // BEGIN String ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
645
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
646 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
647 * A function that converts strings to lists.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
648 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
649 public static final F<String, List<Character>> String_List = new F<String, List<Character>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
650 public List<Character> f(final String s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
651 return fromString(s);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
652 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
653 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
654
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
655 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
656 * A function that converts strings to arrays.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
657 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
658 public static final F<String, Array<Character>> String_Array = new F<String, Array<Character>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
659 public Array<Character> f(final String s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
660 return fromString(s).toArray();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
661 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
662 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
663
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
664 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
665 * A function that converts strings to options.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
666 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
667 public static final F<String, Option<Character>> String_Option = new F<String, Option<Character>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
668 public Option<Character> f(final String s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
669 return fromString(s).toOption();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
670 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
671 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
672
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
673 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
674 * A function that converts string to eithers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
675 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
676 * @return A function that converts string to eithers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
677 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
678 public static <A> F<P1<A>, F<String, Either<A, Character>>> String_Either() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
679 return new F<P1<A>, F<String, Either<A, Character>>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
680 public F<String, Either<A, Character>> f(final P1<A> a) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
681 return new F<String, Either<A, Character>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
682 public Either<A, Character> f(final String s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
683 return fromString(s).toEither(a);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
684 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
685 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
686 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
687 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
688 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
689
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
690 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
691 * A function that converts strings to streams.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
692 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
693 public static final F<String, Stream<Character>> String_Stream = new F<String, Stream<Character>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
694 public Stream<Character> f(final String s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
695 return fromString(s).toStream();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
696 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
697 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
698
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
699 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
700 * A function that converts strings to string buffers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
701 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
702 public static final F<String, StringBuffer> String_StringBuffer = new F<String, StringBuffer>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
703 public StringBuffer f(final String s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
704 return new StringBuffer(s);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
705 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
706 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
707
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
708 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
709 * A function that converts strings to string builders.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
710 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
711 public static final F<String, StringBuilder> String_StringBuilder = new F<String, StringBuilder>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
712 public StringBuilder f(final String s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
713 return new StringBuilder(s);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
714 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
715 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
716
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
717 // END String ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
718
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
719 // BEGIN StringBuffer ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
720
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
721 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
722 * A function that converts string buffers to lists.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
723 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
724 public static final F<StringBuffer, List<Character>> StringBuffer_List = new F<StringBuffer, List<Character>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
725 public List<Character> f(final StringBuffer s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
726 return fromString(s.toString());
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
727 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
728 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
729
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
730 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
731 * A function that converts string buffers to arrays.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
732 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
733 public static final F<StringBuffer, Array<Character>> StringBuffer_Array = new F<StringBuffer, Array<Character>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
734 public Array<Character> f(final StringBuffer s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
735 return fromString(s.toString()).toArray();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
736 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
737 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
738
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
739 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
740 * A function that converts string buffers to streams.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
741 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
742 public static final F<StringBuffer, Stream<Character>> StringBuffer_Stream =
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
743 new F<StringBuffer, Stream<Character>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
744 public Stream<Character> f(final StringBuffer s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
745 return fromString(s.toString()).toStream();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
746 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
747 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
748
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
749 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
750 * A function that converts string buffers to options.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
751 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
752 public static final F<StringBuffer, Option<Character>> StringBuffer_Option =
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
753 new F<StringBuffer, Option<Character>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
754 public Option<Character> f(final StringBuffer s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
755 return fromString(s.toString()).toOption();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
756 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
757 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
758
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
759 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
760 * A function that converts string buffers to eithers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
761 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
762 * @return A function that converts string buffers to eithers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
763 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
764 public static <A> F<P1<A>, F<StringBuffer, Either<A, Character>>> StringBuffer_Either() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
765 return new F<P1<A>, F<StringBuffer, Either<A, Character>>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
766 public F<StringBuffer, Either<A, Character>> f(final P1<A> a) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
767 return new F<StringBuffer, Either<A, Character>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
768 public Either<A, Character> f(final StringBuffer s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
769 return fromString(s.toString()).toEither(a);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
770 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
771 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
772 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
773 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
774 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
775
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
776 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
777 * A function that converts string buffers to strings.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
778 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
779 public static final F<StringBuffer, String> StringBuffer_String = new F<StringBuffer, String>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
780 public String f(final StringBuffer s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
781 return s.toString();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
782 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
783 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
784
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
785 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
786 * A function that converts string buffers to string builders.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
787 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
788 public static final F<StringBuffer, StringBuilder> StringBuffer_StringBuilder = new F<StringBuffer, StringBuilder>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
789 public StringBuilder f(final StringBuffer s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
790 return new StringBuilder(s);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
791 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
792 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
793
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
794 // END StringBuffer ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
795
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
796 // BEGIN StringBuilder ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
797
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
798 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
799 * A function that converts string builders to lists.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
800 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
801 public static final F<StringBuilder, List<Character>> StringBuilder_List = new F<StringBuilder, List<Character>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
802 public List<Character> f(final StringBuilder s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
803 return fromString(s.toString());
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
804 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
805 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
806
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
807 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
808 * A function that converts string builders to arrays.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
809 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
810 public static final F<StringBuilder, Array<Character>> StringBuilder_Array =
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
811 new F<StringBuilder, Array<Character>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
812 public Array<Character> f(final StringBuilder s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
813 return fromString(s.toString()).toArray();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
814 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
815 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
816
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
817 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
818 * A function that converts string builders to streams.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
819 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
820 public static final F<StringBuilder, Stream<Character>> StringBuilder_Stream =
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
821 new F<StringBuilder, Stream<Character>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
822 public Stream<Character> f(final StringBuilder s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
823 return fromString(s.toString()).toStream();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
824 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
825 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
826
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
827 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
828 * A function that converts string builders to options.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
829 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
830 public static final F<StringBuilder, Option<Character>> StringBuilder_Option =
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
831 new F<StringBuilder, Option<Character>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
832 public Option<Character> f(final StringBuilder s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
833 return fromString(s.toString()).toOption();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
834 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
835 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
836
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
837 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
838 * A function that converts string builders to eithers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
839 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
840 * @return A function that converts string builders to eithers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
841 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
842 public static <A> F<P1<A>, F<StringBuilder, Either<A, Character>>> StringBuilder_Either() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
843 return new F<P1<A>, F<StringBuilder, Either<A, Character>>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
844 public F<StringBuilder, Either<A, Character>> f(final P1<A> a) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
845 return new F<StringBuilder, Either<A, Character>>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
846 public Either<A, Character> f(final StringBuilder s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
847 return fromString(s.toString()).toEither(a);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
848 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
849 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
850 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
851 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
852 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
853
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
854 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
855 * A function that converts string builders to strings.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
856 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
857 public static final F<StringBuilder, String> StringBuilder_String = new F<StringBuilder, String>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
858 public String f(final StringBuilder s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
859 return s.toString();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
860 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
861 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
862
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
863 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
864 * A function that converts string builders to string buffers.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
865 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
866 public static final F<StringBuilder, StringBuffer> StringBuilder_StringBuffer = new F<StringBuilder, StringBuffer>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
867 public StringBuffer f(final StringBuilder s) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
868 return new StringBuffer(s);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
869 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
870 };
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
871
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
872 // END StringBuilder ->
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
873
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
874
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
875 // BEGIN Try
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
876
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
877 public static <A, B, Z extends Exception> SafeIO<Validation<Z, A>> Try_SafeIO(Try0<A, Z> t) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
878 return F_SafeIO(u -> Try.f(t)._1());
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
879 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
880
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
881 public static <A, B, Z extends Exception> F<Try0<A, Z>, SafeIO<Validation<Z, A>>> Try_SafeIO() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
882 return t -> Try_SafeIO(t);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
883 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
884
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
885 public static <A, B, Z extends IOException> IO<A> Try_IO(Try0<A, Z> t) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
886 return () -> t.f();
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
887 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
888
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
889 public static <A, B, Z extends IOException> F<Try0<A, Z>, IO<A>> Try_IO() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
890 return t -> Try_IO(t);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
891 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
892
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
893 public static <A, B, Z extends IOException> F<A, Validation<Z, B>> Try_F(Try1<A, B, Z> t) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
894 return Try.f(t);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
895 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
896
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
897 public static <A, B, Z extends IOException> F<Try1<A, B, Z>, F<A, Validation<Z, B>>> Try_F() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
898 return t -> Try_F(t);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
899 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
900
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
901 // END Try
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
902
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
903 // BEGIN TryEffect
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
904
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
905 static public <E extends Exception> P1<Validation<E, Unit>> TryEffect_P(final TryEffect0<E> t) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
906 return TryEffect.f(t);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
907 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
908
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
909
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
910 // END TryEffect
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
911
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
912 }