Skip to content

Commit f9d58bb

Browse files
committed
Merge branch 'functionaljava/master' into hard-memo
2 parents 8532b16 + 6b3905d commit f9d58bb

File tree

188 files changed

+4011
-4769
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

188 files changed

+4011
-4769
lines changed

build.gradle

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ ext {
77
buildscript {
88
ext {
99
uptodateVersion = "1.6.0"
10-
retrolambdaVersion = "3.2.0"
10+
retrolambdaPluginVersion = "3.2.5"
11+
retrolambdaVersion = "2.3.0"
1112
}
1213

1314
repositories {
@@ -18,12 +19,11 @@ buildscript {
1819

1920
dependencies {
2021
classpath "com.ofg:uptodate-gradle-plugin:$uptodateVersion"
21-
classpath "me.tatarka:gradle-retrolambda:$retrolambdaVersion"
22+
classpath "me.tatarka:gradle-retrolambda:$retrolambdaPluginVersion"
2223
classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.6.3'
2324
}
2425
}
2526

26-
2727
apply plugin: "jacoco"
2828
apply plugin: 'com.github.kt3k.coveralls'
2929

@@ -40,7 +40,9 @@ allprojects {
4040

4141

4242
jacoco {
43-
toolVersion = "0.7.1.201405082137"
43+
// toolVersion = "0.7.1.201405082137"
44+
toolVersion = "0.7.6.201602180812"
45+
4446
}
4547

4648
defaultTasks "build"

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public static <A> Error decons(final A a, final Show<A> sa) {
7272
* @param c The type being deconstructed.
7373
* @return A deconstruction failure that was non-exhaustive.
7474
*/
75-
@SuppressWarnings({"UnnecessaryFullyQualifiedName"})
75+
@SuppressWarnings("UnnecessaryFullyQualifiedName")
7676
public static <A> Error decons(final java.lang.Class<A> c) {
7777
return error("Deconstruction failure on type " + c);
7878
}
@@ -83,7 +83,7 @@ public static <A> Error decons(final java.lang.Class<A> c) {
8383
* @return A function that returns the <code>toString</code> for a throwable.
8484
*/
8585
public static <T extends Throwable> F<T, String> eToString() {
86-
return t -> t.toString();
86+
return Throwable::toString;
8787
}
8888

8989
/**
@@ -92,6 +92,6 @@ public static <T extends Throwable> F<T, String> eToString() {
9292
* @return A function that returns the <code>getMessage</code> for a throwable.
9393
*/
9494
public static <T extends Throwable> F<T, String> eMessage() {
95-
return t -> t.getMessage();
95+
return Throwable::getMessage;
9696
}
9797
}

core/src/main/java/fj/Class.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import fj.data.List;
44
import static fj.data.List.unfold;
5-
import fj.data.Option;
65
import static fj.data.Option.none;
76
import static fj.data.Option.some;
87
import fj.data.Tree;
@@ -39,14 +38,14 @@ public java.lang.Class<? super T> _1() {
3938
return c2;
4039
}
4140

42-
@SuppressWarnings({"unchecked"})
41+
@SuppressWarnings("unchecked")
4342
public java.lang.Class<? super T> _2() {
4443
return c2.getSuperclass();
4544
}
4645
};
4746
return some(p);
4847
}
49-
}, c).map(c1 -> clas(c1));
48+
}, c).map(Class::clas);
5049
}
5150

5251
/**
@@ -102,7 +101,7 @@ public static Tree<Type> typeParameterTree(final Type t) {
102101
}
103102
types = Tree.node(pt.getRawType(), typeArgs);
104103
} else {
105-
types = Tree.node(t, List.<Tree<Type>>nil());
104+
types = Tree.node(t, List.nil());
106105
}
107106
return types;
108107
}
@@ -123,6 +122,6 @@ public java.lang.Class<T> clas() {
123122
* @return A class from the given argument.
124123
*/
125124
public static <T> Class<T> clas(final java.lang.Class<T> c) {
126-
return new Class<T>(c);
125+
return new Class<>(c);
127126
}
128127
}

core/src/main/java/fj/Digit.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,20 +176,20 @@ public static Option<Digit> fromChar(final char c) {
176176
/**
177177
* First-class conversion from digit to a long.
178178
*/
179-
public static final F<Digit, Long> toLong = d -> d.toLong();
179+
public static final F<Digit, Long> toLong = Digit::toLong;
180180

181181
/**
182182
* First-class conversion from a long to a digit.
183183
*/
184-
public static final F<Long, Digit> fromLong = i -> fromLong(i);
184+
public static final F<Long, Digit> fromLong = Digit::fromLong;
185185

186186
/**
187187
* First-class conversion from a digit to a character.
188188
*/
189-
public static final F<Digit, Character> toChar = d -> d.toChar();
189+
public static final F<Digit, Character> toChar = Digit::toChar;
190190

191191
/**
192192
* First-class conversion from a character to a digit.
193193
*/
194-
public static final F<Character, Option<Digit>> fromChar = c -> fromChar(c);
194+
public static final F<Character, Option<Digit>> fromChar = Digit::fromChar;
195195
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*
1818
* @version %build.number%
1919
*/
20-
public class Effect {
20+
public final class Effect {
2121

2222
private Effect() {}
2323

@@ -33,7 +33,7 @@ public static P1<Unit> f(Effect0 e) {
3333
*
3434
* @return The function using the given effect.
3535
*/
36-
public static final <A> F<A, Unit> f(Effect1<A> e1) {
36+
public static <A> F<A, Unit> f(Effect1<A> e1) {
3737
return a -> {
3838
e1.f(a);
3939
return unit();
@@ -95,12 +95,12 @@ public static <A, B, C, D, E> F5<A, B, C, D, E, Unit> f(Effect5<A, B, C, D, E> z
9595
* @param f The function to map over the effect.
9696
* @return An effect after a contra-variant map.
9797
*/
98-
public static final <A, B> Effect1<B> contramap(Effect1<A> e1, final F<B, A> f) {
98+
public static <A, B> Effect1<B> contramap(Effect1<A> e1, final F<B, A> f) {
9999
return b -> e1.f(f.f(b));
100100
}
101101

102102
public static <A> Effect1<A> lazy(final F<A, Unit> f) {
103-
return a -> f.f(a);
103+
return f::f;
104104

105105
}
106106

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

Lines changed: 15 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public boolean notEq(final A a1, final A a2) {
5555
* @return A function that returns <code>true</code> if the two given arguments are equal.
5656
*/
5757
public F2<A, A, Boolean> eq() {
58-
return (a, a1) -> eq(a, a1);
58+
return this::eq;
5959
}
6060

6161
/**
@@ -75,7 +75,7 @@ public F<A, Boolean> eq(final A a) {
7575
* @return A new equal.
7676
*/
7777
public <B> Equal<B> contramap(final F<B, A> f) {
78-
return equal(F1Functions.o(F1Functions.o(F1Functions.<B, A, Boolean>andThen(f), this.f), f));
78+
return equal(F1Functions.o(F1Functions.o(F1Functions.andThen(f), this.f), f));
7979
}
8080

8181
/**
@@ -85,7 +85,7 @@ public <B> Equal<B> contramap(final F<B, A> f) {
8585
* @return An equal instance from the given function.
8686
*/
8787
public static <A> Equal<A> equal(final F<A, F<A, Boolean>> f) {
88-
return new Equal<A>(f);
88+
return new Equal<>(f);
8989
}
9090

9191
/**
@@ -96,7 +96,7 @@ public static <A> Equal<A> equal(final F<A, F<A, Boolean>> f) {
9696
* equality.
9797
*/
9898
public static <A> Equal<A> anyEqual() {
99-
return equal(a1 -> a2 -> a1.equals(a2));
99+
return equal(a1 -> a1::equals);
100100
}
101101

102102
/**
@@ -202,7 +202,7 @@ public static <A, B> Equal<Either<A, B>> eitherEqual(final Equal<A> ea, final Eq
202202
* @return An equal instance for the {@link Validation} type.
203203
*/
204204
public static <A, B> Equal<Validation<A, B>> validationEqual(final Equal<A> ea, final Equal<B> eb) {
205-
return eitherEqual(ea, eb).contramap(Validation.<A, B>either());
205+
return eitherEqual(ea, eb).contramap(Validation.either());
206206
}
207207

208208
/**
@@ -235,7 +235,7 @@ public static <A> Equal<List<A>> listEqual(final Equal<A> ea) {
235235
* @return An equal instance for the {@link NonEmptyList} type.
236236
*/
237237
public static <A> Equal<NonEmptyList<A>> nonEmptyListEqual(final Equal<A> ea) {
238-
return listEqual(ea).contramap(NonEmptyList.<A>toList_());
238+
return listEqual(ea).contramap(NonEmptyList.toList_());
239239
}
240240

241241
/**
@@ -302,7 +302,7 @@ public static <A> Equal<Array<A>> arrayEqual(final Equal<A> ea) {
302302
* @return An equal instance for the {@link Tree} type.
303303
*/
304304
public static <A> Equal<Tree<A>> treeEqual(final Equal<A> ea) {
305-
return Equal.<Tree<A>>equal(curry((t1, t2) -> ea.eq(t1.root(), t2.root()) && p1Equal(streamEqual(Equal.<A>treeEqual(ea))).eq(t2.subForest(), t1.subForest())));
305+
return Equal.equal(curry((t1, t2) -> ea.eq(t1.root(), t2.root()) && p1Equal(streamEqual(Equal.treeEqual(ea))).eq(t2.subForest(), t1.subForest())));
306306
}
307307

308308
/**
@@ -443,7 +443,7 @@ public static <A, B, C, D, E> Equal<P5<A, B, C, D, E>> p5Equal(final Equal<A> ea
443443
* @return An equal instance for a vector-2.
444444
*/
445445
public static <A> Equal<V2<A>> v2Equal(final Equal<A> ea) {
446-
return streamEqual(ea).contramap(V2.<A>toStream_());
446+
return streamEqual(ea).contramap(V2.toStream_());
447447
}
448448

449449
/**
@@ -453,7 +453,7 @@ public static <A> Equal<V2<A>> v2Equal(final Equal<A> ea) {
453453
* @return An equal instance for a vector-3.
454454
*/
455455
public static <A> Equal<V3<A>> v3Equal(final Equal<A> ea) {
456-
return streamEqual(ea).contramap(V3.<A>toStream_());
456+
return streamEqual(ea).contramap(V3.toStream_());
457457
}
458458

459459
/**
@@ -463,7 +463,7 @@ public static <A> Equal<V3<A>> v3Equal(final Equal<A> ea) {
463463
* @return An equal instance for a vector-4.
464464
*/
465465
public static <A> Equal<V4<A>> v4Equal(final Equal<A> ea) {
466-
return streamEqual(ea).contramap(V4.<A>toStream_());
466+
return streamEqual(ea).contramap(V4.toStream_());
467467
}
468468

469469
/**
@@ -473,7 +473,7 @@ public static <A> Equal<V4<A>> v4Equal(final Equal<A> ea) {
473473
* @return An equal instance for a vector-5.
474474
*/
475475
public static <A> Equal<V5<A>> v5Equal(final Equal<A> ea) {
476-
return streamEqual(ea).contramap(V5.<A>toStream_());
476+
return streamEqual(ea).contramap(V5.toStream_());
477477
}
478478

479479
/**
@@ -483,7 +483,7 @@ public static <A> Equal<V5<A>> v5Equal(final Equal<A> ea) {
483483
* @return An equal instance for a vector-6.
484484
*/
485485
public static <A> Equal<V6<A>> v6Equal(final Equal<A> ea) {
486-
return streamEqual(ea).contramap(V6.<A>toStream_());
486+
return streamEqual(ea).contramap(V6.toStream_());
487487
}
488488

489489
/**
@@ -493,7 +493,7 @@ public static <A> Equal<V6<A>> v6Equal(final Equal<A> ea) {
493493
* @return An equal instance for a vector-7.
494494
*/
495495
public static <A> Equal<V7<A>> v7Equal(final Equal<A> ea) {
496-
return streamEqual(ea).contramap(V7.<A>toStream_());
496+
return streamEqual(ea).contramap(V7.toStream_());
497497
}
498498

499499
/**
@@ -503,7 +503,7 @@ public static <A> Equal<V7<A>> v7Equal(final Equal<A> ea) {
503503
* @return An equal instance for a vector-8.
504504
*/
505505
public static <A> Equal<V8<A>> v8Equal(final Equal<A> ea) {
506-
return streamEqual(ea).contramap(V8.<A>toStream_());
506+
return streamEqual(ea).contramap(V8.toStream_());
507507
}
508508

509509
/**
@@ -538,31 +538,12 @@ public static <A> Equal<Set<A>> setEqual(final Equal<A> e) {
538538
}
539539

540540
public static <K, V> Equal<TreeMap<K, V>> treeMapEqual(Equal<K> k, Equal<V> v) {
541-
return equal(t1 -> t2 -> Equal.streamEqual(p2Equal(k, v)).eq(t1.toStream(), t2.toStream()));
541+
return equal(t1 -> t2 -> streamEqual(p2Equal(k, v)).eq(t1.toStream(), t2.toStream()));
542542
}
543543

544544
public static <A, B> Equal<Writer<A, B>> writerEqual(Equal<A> eq1, Equal<B> eq2) {
545545
return equal(w1 -> w2 -> p2Equal(eq1, eq2).eq(w1.run(), w2.run()));
546546
}
547-
548-
/**
549-
* @return Returns none if no equality can be determined by checking the nullity and reference values, else the equality
550-
* @deprecated see issue #122.
551-
*/
552-
@Deprecated
553-
public static Option<Boolean> shallowEqualsO(Object o1, Object o2) {
554-
if (o1 == null && o2 == null) {
555-
return Option.some(true);
556-
} else if (o1 == o2) {
557-
return Option.some(true);
558-
} else if (o1 != null && o2 != null) {
559-
java.lang.Class<?> c = o1.getClass();
560-
// WARNING: this may return some(false) for two instance of same type (and thus comparable) but of different class (typicaly anonymous class instance).
561-
return c.isInstance(o2) ? Option.none() : Option.some(false);
562-
} else {
563-
return Option.some(false);
564-
}
565-
}
566547

567548
/**
568549
* Helper method to implement {@link Object#equals(Object)} correctly. DO NOT USE it for any other purpose.

core/src/main/java/fj/F.java

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,5 @@
11
package fj;
22

3-
import fj.control.parallel.Actor;
4-
import fj.control.parallel.Promise;
5-
import fj.control.parallel.Strategy;
6-
import fj.data.Array;
7-
import fj.data.Either;
8-
import fj.data.IterableW;
9-
import fj.data.List;
10-
import fj.data.NonEmptyList;
11-
import fj.data.Option;
12-
import fj.data.Set;
13-
import fj.data.Stream;
14-
import fj.data.Tree;
15-
import fj.data.TreeZipper;
16-
import fj.data.Validation;
17-
import fj.data.Zipper;
18-
19-
import java.util.ArrayList;
20-
import java.util.LinkedList;
21-
import java.util.PriorityQueue;
22-
import java.util.TreeSet;
23-
import java.util.concurrent.ArrayBlockingQueue;
24-
import java.util.concurrent.ConcurrentLinkedQueue;
25-
import java.util.concurrent.CopyOnWriteArrayList;
26-
import java.util.concurrent.CopyOnWriteArraySet;
27-
import java.util.concurrent.LinkedBlockingQueue;
28-
import java.util.concurrent.PriorityBlockingQueue;
29-
import java.util.concurrent.SynchronousQueue;
30-
31-
import static fj.data.Option.some;
32-
import static fj.data.Stream.iterableStream;
33-
import static fj.data.Zipper.fromStream;
34-
353
/**
364
* A transformation or function from <code>A</code> to <code>B</code>. This type can be represented
375
* using the Java 7 closure syntax.
@@ -45,6 +13,6 @@ public interface F<A, B> {
4513
* @param a The <code>A</code> to transform.
4614
* @return The result of the transformation.
4715
*/
48-
public abstract B f(A a);
16+
B f(A a);
4917

5018
}

core/src/main/java/fj/F0.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@
55
*/
66
public interface F0<A> {
77

8-
public A f();
8+
A f();
99

1010
}

0 commit comments

Comments
 (0)