Skip to content

Commit 1970c3e

Browse files
committed
use more method references. make Stream conversions respect laziness. optimize collectors.
1 parent e6abe86 commit 1970c3e

File tree

2 files changed

+27
-26
lines changed

2 files changed

+27
-26
lines changed

java8/src/main/java/fj/data/Collectors.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public static <A> Collector<A, List.Buffer<A>, Array<A>> toArray() {
2121
List.Buffer::new,
2222
List.Buffer::snoc,
2323
(acc1, acc2) -> acc1.append(acc2.toList()),
24-
(buf) -> Array.iterableArray(buf.toList())
24+
(buf) -> buf.toList().toArray()
2525
);
2626
}
2727

@@ -30,7 +30,7 @@ public static <A> Collector<A, List.Buffer<A>, Stream<A>> toStream() {
3030
List.Buffer::new,
3131
List.Buffer::snoc,
3232
(acc1, acc2) -> acc1.append(acc2.toList()),
33-
(buf) -> Stream.iterableStream(buf.toList())
33+
(buf) -> buf.toList().toStream()
3434
);
3535
}
3636
}

java8/src/main/java/fj/data/Java8.java

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

33
import java.util.Iterator;
44
import java.util.Optional;
5+
import java.util.Spliterators;
56
import java.util.function.BiFunction;
67
import java.util.function.Consumer;
78
import java.util.function.Function;
@@ -28,95 +29,95 @@ private Java8() {
2829
}
2930

3031
public static <A> P1<A> Supplier_P1(final Supplier<A> s) {
31-
return Java8.<A>Supplier_P1().f(s);
32+
return P.lazy(s::get);
3233
}
3334

3435
public static <A> F<Supplier<A>, P1<A>> Supplier_P1() {
35-
return s -> P.lazy(s::get);
36+
return Java8::Supplier_P1;
3637
}
3738

3839
public static <A> Supplier<A> P1_Supplier(final P1<A> p) {
39-
return Java8.<A>P1_Supplier().f(p);
40+
return p::_1;
4041
}
4142

4243
public static <A> F<P1<A>, Supplier<A>> P1_Supplier() {
43-
return (p) -> p::_1;
44+
return Java8::P1_Supplier;
4445
}
4546

4647
public static <A, B> F<A, B> Function_F(final Function<A, B> f) {
47-
return Java8.<A, B>Function_F().f(f);
48+
return f::apply;
4849
}
4950

5051
public static <A, B> F<Function<A, B>, F<A, B>> Function_F() {
51-
return f -> f::apply;
52+
return Java8::Function_F;
5253
}
5354

5455
public static <A, B> Function<A, B> F_Function(final F<A, B> f) {
55-
return Java8.<A, B>F_Function().f(f);
56+
return f::f;
5657
}
5758

5859
public static <A, B> F<F<A, B>, Function<A, B>> F_Function() {
59-
return f -> f::f;
60+
return Java8::F_Function;
6061
}
6162

6263
public static <A, B, C> F2<A, B, C> BiFunction_F2(final BiFunction<A, B, C> f) {
63-
return Java8.<A, B, C>BiFunction_F2().f(f);
64+
return f::apply;
6465
}
6566

6667
public static <A, B, C> F<BiFunction<A, B, C>, F2<A, B, C>> BiFunction_F2() {
67-
return f -> f::apply;
68+
return Java8::BiFunction_F2;
6869
}
6970

7071
public static <A, B, C> BiFunction<A, B, C> F2_BiFunction(final F2<A, B, C> f) {
71-
return Java8.<A, B, C>F2_BiFunction().f(f);
72+
return f::f;
7273
}
7374

7475
public static <A, B, C> F<F2<A, B, C>, BiFunction<A, B, C>> F2_BiFunction() {
75-
return f -> f::f;
76+
return Java8::F2_BiFunction;
7677
}
7778

7879
public static <A, E extends Exception> Supplier<Validation<E, A>> TryCatch0_Supplier(final Try0<A, E> t) {
79-
return Java8.<A, E>TryCatch0_Supplier().f(t);
80+
return () -> Try.f(t)._1();
8081
}
8182

8283
public static <A, E extends Exception> F<Try0<A, E>, Supplier<Validation<E, A>>> TryCatch0_Supplier() {
83-
return t -> () -> Try.f(t)._1();
84+
return Java8::TryCatch0_Supplier;
8485
}
8586

8687
public static <A, B, E extends Exception> Function<A, Validation<E, B>> TryCatch1_Function(final Try1<A, B, E> t) {
87-
return Java8.<A, B, E>TryCatch1_Function().f(t);
88+
return a -> Try.f(t).f(a);
8889
}
8990

9091
public static <A, B, E extends Exception> F<Try1<A, B, E>, Function<A, Validation<E, B>>> TryCatch1_Function() {
91-
return t -> a -> Try.f(t).f(a);
92+
return Java8::TryCatch1_Function;
9293
}
9394

9495
public static <A, B, C, E extends Exception> BiFunction<A, B, Validation<E, C>> TryCatch2_BiFunction(final Try2<A, B, C, E> t) {
95-
return Java8.<A, B, C, E>TryCatch2_BiFunction().f(t);
96+
return (a, b) -> Try.f(t).f(a, b);
9697
}
9798

9899
public static <A, B, C, E extends Exception> F<Try2<A, B, C, E>, BiFunction<A, B, Validation<E, C>>> TryCatch2_BiFunction() {
99-
return t -> (a, b) -> Try.f(t).f(a, b);
100+
return Java8::TryCatch2_BiFunction;
100101
}
101102

102103
public static <A> java.util.stream.Stream<A> List_JavaStream(final List<A> list) {
103104
return Iterable_JavaStream(list);
104105
}
105106

106107
public static <A> Option<A> Optional_Option(final Optional<A> o) {
107-
return Java8.<A>Optional_Option().f(o);
108+
return o.isPresent() ? Option.some(o.get()) : Option.none();
108109
}
109110

110111
public static <A> F<Optional<A>, Option<A>> Optional_Option() {
111-
return o -> o.isPresent() ? Option.some(o.get()) : Option.none();
112+
return Java8::Optional_Option;
112113
}
113114

114115
public static <A> Optional<A> Option_Optional(final Option<A> o) {
115-
return Java8.<A>Option_Optional().f(o);
116+
return o.option(Optional.empty(), Optional::ofNullable);
116117
}
117118

118119
public static <A> F<Option<A>, Optional<A>> Option_Optional() {
119-
return o -> o.isSome() ? Optional.ofNullable(o.some()) : Optional.empty();
120+
return Java8::Option_Optional;
120121
}
121122

122123
public static <A> F<Consumer<A>, F<A, Unit>> Consumer_F() {
@@ -139,15 +140,15 @@ public static <A> java.util.stream.Stream<A> Iterable_JavaStream(final Iterable<
139140
}
140141

141142
public static <A> java.util.stream.Stream<A> Iterator_JavaStream(final Iterator<A> it) {
142-
return Iterable_JavaStream(() -> it);
143+
return StreamSupport.stream(Spliterators.spliteratorUnknownSize(it, 0), false);
143144
}
144145

145146
public static <A> F<fj.data.Stream<A>, java.util.stream.Stream<A>> Stream_JavaStream() {
146147
return Java8::Stream_JavaStream;
147148
}
148149

149150
public static <A> Stream<A> JavaStream_Stream(final java.util.stream.Stream<A> s) {
150-
return s.collect(Collectors.toStream());
151+
return Stream.iteratorStream(s.iterator());
151152
}
152153

153154
public static <A> List<A> JavaStream_List(final java.util.stream.Stream<A> s) {

0 commit comments

Comments
 (0)