Skip to content

Commit 1c257a3

Browse files
committed
using static methods to gain inference
1 parent 7acc222 commit 1c257a3

12 files changed

Lines changed: 260 additions & 345 deletions

File tree

core/src/main/java/fj/Bottom.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,7 @@ public static <A> P1<A> error_(final String s) {
5252
* @return A function that throws an error using the given message, ignoring its argument.
5353
*/
5454
public static <A, B> F<A, B> errorF(final String s) {
55-
return a -> {
56-
throw new Error(s);
57-
};
55+
return a -> {throw new Error(s);};
5856
}
5957

6058
/**

core/src/main/java/fj/Effect.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,15 +93,12 @@ public static <A, B, C, D, E> F5<A, B, C, D, E, Unit> f(Effect5<A, B, C, D, E> z
9393
* @return An effect after a contra-variant map.
9494
*/
9595
public final <A, B> Effect1<B> comap(Effect1<A> e1, final F<B, A> f) {
96-
return b -> {
97-
e1.f(f.f(b));
98-
};
96+
return b -> e1.f(f.f(b));
9997
}
10098

10199
public static <A> Effect1<A> lazy(final F<A, Unit> f) {
102-
return a -> {
103-
f.f(a);
104-
};
100+
return a -> f.f(a);
101+
105102
}
106103

107104
// public static <A> void f(Effect1<A> )

core/src/main/java/fj/Equal.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public static <A> Equal<A> equal(final F<A, F<A, Boolean>> f) {
8585
* equality.
8686
*/
8787
public static <A> Equal<A> anyEqual() {
88-
return new Equal<A>(a1 -> a2 -> a1.equals(a2));
88+
return equal(a1 -> a2 -> a1.equals(a2));
8989
}
9090

9191
/**
@@ -147,7 +147,7 @@ public static <A> Equal<A> anyEqual() {
147147
* An equal instance for the {@link StringBuffer} type.
148148
*/
149149
public static final Equal<StringBuffer> stringBufferEqual =
150-
new Equal<StringBuffer>(sb1 -> sb2 -> {
150+
Equal.equal(sb1 -> sb2 -> {
151151
if (sb1.length() == sb2.length()) {
152152
for (int i = 0; i < sb1.length(); i++)
153153
if (sb1.charAt(i) != sb2.charAt(i))
@@ -161,7 +161,7 @@ public static <A> Equal<A> anyEqual() {
161161
* An equal instance for the {@link StringBuilder} type.
162162
*/
163163
public static final Equal<StringBuilder> stringBuilderEqual =
164-
new Equal<StringBuilder>(sb1 -> sb2 -> {
164+
Equal.equal(sb1 -> sb2 -> {
165165
if (sb1.length() == sb2.length()) {
166166
for (int i = 0; i < sb1.length(); i++)
167167
if (sb1.charAt(i) != sb2.charAt(i))
@@ -179,7 +179,7 @@ public static <A> Equal<A> anyEqual() {
179179
* @return An equal instance for the {@link Either} type.
180180
*/
181181
public static <A, B> Equal<Either<A, B>> eitherEqual(final Equal<A> ea, final Equal<B> eb) {
182-
return new Equal<Either<A, B>>(e1 -> e2 -> e1.isLeft() && e2.isLeft() && ea.f.f(e1.left().value()).f(e2.left().value()) ||
182+
return Equal.equal(e1 -> e2 -> e1.isLeft() && e2.isLeft() && ea.f.f(e1.left().value()).f(e2.left().value()) ||
183183
e1.isRight() && e2.isRight() && eb.f.f(e1.right().value()).f(e2.right().value()));
184184
}
185185

@@ -201,7 +201,7 @@ public static <A, B> Equal<Validation<A, B>> validationEqual(final Equal<A> ea,
201201
* @return An equal instance for the {@link List} type.
202202
*/
203203
public static <A> Equal<List<A>> listEqual(final Equal<A> ea) {
204-
return new Equal<List<A>>(a1 -> a2 -> {
204+
return Equal.equal(a1 -> a2 -> {
205205
List<A> x1 = a1;
206206
List<A> x2 = a2;
207207

@@ -234,7 +234,7 @@ public static <A> Equal<NonEmptyList<A>> nonEmptyListEqual(final Equal<A> ea) {
234234
* @return An equal instance for the {@link Option} type.
235235
*/
236236
public static <A> Equal<Option<A>> optionEqual(final Equal<A> ea) {
237-
return new Equal<Option<A>>(o1 -> o2 -> o1.isNone() && o2.isNone() ||
237+
return Equal.equal(o1 -> o2 -> o1.isNone() && o2.isNone() ||
238238
o1.isSome() && o2.isSome() && ea.f.f(o1.some()).f(o2.some()));
239239
}
240240

@@ -245,7 +245,7 @@ public static <A> Equal<Option<A>> optionEqual(final Equal<A> ea) {
245245
* @return An equal instance for the {@link Stream} type.
246246
*/
247247
public static <A> Equal<Stream<A>> streamEqual(final Equal<A> ea) {
248-
return new Equal<Stream<A>>(a1 -> a2 -> {
248+
return Equal.equal(a1 -> a2 -> {
249249
Stream<A> x1 = a1;
250250
Stream<A> x2 = a2;
251251

@@ -268,7 +268,7 @@ public static <A> Equal<Stream<A>> streamEqual(final Equal<A> ea) {
268268
* @return An equal instance for the {@link Array} type.
269269
*/
270270
public static <A> Equal<Array<A>> arrayEqual(final Equal<A> ea) {
271-
return new Equal<Array<A>>(a1 -> a2 -> {
271+
return Equal.equal(a1 -> a2 -> {
272272
if (a1.length() == a2.length()) {
273273
for (int i = 0; i < a1.length(); i++) {
274274
if (!ea.eq(a1.get(i), a2.get(i)))
@@ -287,7 +287,7 @@ public static <A> Equal<Array<A>> arrayEqual(final Equal<A> ea) {
287287
* @return An equal instance for the {@link Tree} type.
288288
*/
289289
public static <A> Equal<Tree<A>> treeEqual(final Equal<A> ea) {
290-
return new Equal<Tree<A>>(curry((t1, t2) -> ea.eq(t1.root(), t2.root()) && p1Equal(streamEqual(treeEqual(ea))).eq(t2.subForest(), t1.subForest())));
290+
return Equal.<Tree<A>>equal(curry((t1, t2) -> ea.eq(t1.root(), t2.root()) && p1Equal(streamEqual(treeEqual(ea))).eq(t2.subForest(), t1.subForest())));
291291
}
292292

293293
/**
@@ -297,7 +297,7 @@ public static <A> Equal<Tree<A>> treeEqual(final Equal<A> ea) {
297297
* @return An equal instance for a product-1.
298298
*/
299299
public static <A> Equal<P1<A>> p1Equal(final Equal<A> ea) {
300-
return new Equal<P1<A>>(p1 -> p2 -> ea.eq(p1._1(), p2._1()));
300+
return equal(p1 -> p2 -> ea.eq(p1._1(), p2._1()));
301301
}
302302

303303
/**
@@ -308,7 +308,7 @@ public static <A> Equal<P1<A>> p1Equal(final Equal<A> ea) {
308308
* @return An equal instance for a product-2.
309309
*/
310310
public static <A, B> Equal<P2<A, B>> p2Equal(final Equal<A> ea, final Equal<B> eb) {
311-
return new Equal<P2<A, B>>(p1 -> p2 -> ea.eq(p1._1(), p2._1()) && eb.eq(p1._2(), p2._2()));
311+
return equal(p1 -> p2 -> ea.eq(p1._1(), p2._1()) && eb.eq(p1._2(), p2._2()));
312312
}
313313

314314
/**
@@ -320,7 +320,7 @@ public static <A, B> Equal<P2<A, B>> p2Equal(final Equal<A> ea, final Equal<B> e
320320
* @return An equal instance for a product-3.
321321
*/
322322
public static <A, B, C> Equal<P3<A, B, C>> p3Equal(final Equal<A> ea, final Equal<B> eb, final Equal<C> ec) {
323-
return new Equal<P3<A, B, C>>(p1 -> p2 -> ea.eq(p1._1(), p2._1()) && eb.eq(p1._2(), p2._2()) && ec.eq(p1._3(), p2._3()));
323+
return equal(p1 -> p2 -> ea.eq(p1._1(), p2._1()) && eb.eq(p1._2(), p2._2()) && ec.eq(p1._3(), p2._3()));
324324
}
325325

326326
/**
@@ -334,7 +334,7 @@ public static <A, B, C> Equal<P3<A, B, C>> p3Equal(final Equal<A> ea, final Equa
334334
*/
335335
public static <A, B, C, D> Equal<P4<A, B, C, D>> p4Equal(final Equal<A> ea, final Equal<B> eb, final Equal<C> ec,
336336
final Equal<D> ed) {
337-
return new Equal<P4<A, B, C, D>>(p1 -> p2 -> ea.eq(p1._1(), p2._1()) && eb.eq(p1._2(), p2._2()) && ec.eq(p1._3(), p2._3()) &&
337+
return equal(p1 -> p2 -> ea.eq(p1._1(), p2._1()) && eb.eq(p1._2(), p2._2()) && ec.eq(p1._3(), p2._3()) &&
338338
ed.eq(p1._4(), p2._4()));
339339
}
340340

@@ -351,7 +351,7 @@ public static <A, B, C, D> Equal<P4<A, B, C, D>> p4Equal(final Equal<A> ea, fina
351351
public static <A, B, C, D, E> Equal<P5<A, B, C, D, E>> p5Equal(final Equal<A> ea, final Equal<B> eb,
352352
final Equal<C> ec, final Equal<D> ed,
353353
final Equal<E> ee) {
354-
return new Equal<P5<A, B, C, D, E>>(p1 -> p2 -> ea.eq(p1._1(), p2._1()) && eb.eq(p1._2(), p2._2()) && ec.eq(p1._3(), p2._3()) &&
354+
return equal(p1 -> p2 -> ea.eq(p1._1(), p2._1()) && eb.eq(p1._2(), p2._2()) && ec.eq(p1._3(), p2._3()) &&
355355
ed.eq(p1._4(), p2._4()) && ee.eq(p1._5(), p2._5()));
356356
}
357357

@@ -369,7 +369,7 @@ public static <A, B, C, D, E> Equal<P5<A, B, C, D, E>> p5Equal(final Equal<A> ea
369369
public static <A, B, C, D, E, F$> Equal<P6<A, B, C, D, E, F$>> p6Equal(final Equal<A> ea, final Equal<B> eb,
370370
final Equal<C> ec, final Equal<D> ed,
371371
final Equal<E> ee, final Equal<F$> ef) {
372-
return new Equal<P6<A, B, C, D, E, F$>>(p1 -> p2 -> ea.eq(p1._1(), p2._1()) && eb.eq(p1._2(), p2._2()) && ec.eq(p1._3(), p2._3()) &&
372+
return equal(p1 -> p2 -> ea.eq(p1._1(), p2._1()) && eb.eq(p1._2(), p2._2()) && ec.eq(p1._3(), p2._3()) &&
373373
ed.eq(p1._4(), p2._4()) && ee.eq(p1._5(), p2._5()) && ef.eq(p1._6(), p2._6()));
374374
}
375375

@@ -389,7 +389,7 @@ public static <A, B, C, D, E> Equal<P5<A, B, C, D, E>> p5Equal(final Equal<A> ea
389389
final Equal<C> ec, final Equal<D> ed,
390390
final Equal<E> ee, final Equal<F$> ef,
391391
final Equal<G> eg) {
392-
return new Equal<P7<A, B, C, D, E, F$, G>>(p1 -> p2 -> ea.eq(p1._1(), p2._1()) && eb.eq(p1._2(), p2._2()) && ec.eq(p1._3(), p2._3()) &&
392+
return equal(p1 -> p2 -> ea.eq(p1._1(), p2._1()) && eb.eq(p1._2(), p2._2()) && ec.eq(p1._3(), p2._3()) &&
393393
ed.eq(p1._4(), p2._4()) && ee.eq(p1._5(), p2._5()) && ef.eq(p1._6(), p2._6()) &&
394394
eg.eq(p1._7(), p2._7()));
395395
}
@@ -415,7 +415,7 @@ public static <A, B, C, D, E> Equal<P5<A, B, C, D, E>> p5Equal(final Equal<A> ea
415415
final Equal<F$> ef,
416416
final Equal<G> eg,
417417
final Equal<H> eh) {
418-
return new Equal<P8<A, B, C, D, E, F$, G, H>>(
418+
return Equal.equal(
419419
p1 -> p2 -> ea.eq(p1._1(), p2._1()) && eb.eq(p1._2(), p2._2()) && ec.eq(p1._3(), p2._3()) &&
420420
ed.eq(p1._4(), p2._4()) && ee.eq(p1._5(), p2._5()) && ef.eq(p1._6(), p2._6()) &&
421421
eg.eq(p1._7(), p2._7()) && eh.eq(p1._8(), p2._8()));

core/src/main/java/fj/F1Functions.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,7 @@ static public <A, B, C> F<F<B, F<B, C>>, F<A, F<A, C>>> on(final F<A, B> f) {
128128
* @return This function promoted to return its result in a product-1.
129129
*/
130130
static public <A, B> F<A, P1<B>> lazy(final F<A, B> f) {
131-
return a -> new P1<B>(){
132-
public B _1() {
133-
return f.f(a);
134-
}
135-
};
131+
return a -> P.lazy(u -> f.f(a));
136132
}
137133

138134
/**

0 commit comments

Comments
 (0)