Skip to content

Commit 2335817

Browse files
committed
Partial replace of anonymous classes with lambdas in Deep
1 parent 7904bfa commit 2335817

File tree

1 file changed

+77
-102
lines changed
  • core/src/main/java/fj/data/fingertrees

1 file changed

+77
-102
lines changed

core/src/main/java/fj/data/fingertrees/Deep.java

Lines changed: 77 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -195,108 +195,83 @@ private static final <V, A> FingerTree<V, A> deepR(final Measured<V, A> measured
195195
}
196196
}
197197

198-
private static <V, A> FingerTree<V, Node<V, A>> addDigits0(final Measured<V, A> m, final FingerTree<V, Node<V, A>> m1,
199-
final Digit<V, A> s1, final Digit<V, A> p2,
200-
final FingerTree<V, Node<V, A>> m2) {
201-
final MakeTree<V, A> mk = mkTree(m);
202-
return s1.match(new F<One<V, A>, FingerTree<V, Node<V, A>>>() {
203-
public FingerTree<V, Node<V, A>> f(final One<V, A> one1) {
204-
return p2.match(new F<One<V, A>, FingerTree<V, Node<V, A>>>() {
205-
public FingerTree<V, Node<V, A>> f(final One<V, A> one2) {
206-
return append1(m, m1, mk.node2(one1.value(), one2.value()), m2);
207-
}
208-
}, new F<Two<V, A>, FingerTree<V, Node<V, A>>>() {
209-
public FingerTree<V, Node<V, A>> f(final Two<V, A> two2) {
210-
final V2<A> vs = two2.values();
211-
return append1(m, m1, mk.node3(one1.value(), vs._1(), vs._2()), m2);
212-
}
213-
}, new F<Three<V, A>, FingerTree<V, Node<V, A>>>() {
214-
public FingerTree<V, Node<V, A>> f(final Three<V, A> three) {
215-
final V3<A> vs = three.values();
216-
return append2(m, m1, mk.node2(one1.value(), vs._1()), mk.node2(vs._2(), vs._3()), m2);
217-
}
218-
}, new F<Four<V, A>, FingerTree<V, Node<V, A>>>() {
219-
public FingerTree<V, Node<V, A>> f(final Four<V, A> four) {
220-
final V4<A> vs = four.values();
221-
return append2(m, m1, mk.node3(one1.value(), vs._1(), vs._2()), mk.node2(vs._3(), vs._4()), m2);
222-
}
223-
});
224-
}
225-
}, new F<Two<V, A>, FingerTree<V, Node<V, A>>>() {
226-
public FingerTree<V, Node<V, A>> f(final Two<V, A> two1) {
227-
final V2<A> v1 = two1.values();
228-
return p2.match(new F<One<V, A>, FingerTree<V, Node<V, A>>>() {
229-
public FingerTree<V, Node<V, A>> f(final One<V, A> one) {
230-
return append1(m, m1, mk.node3(v1._1(), v1._2(), one.value()), m2);
231-
}
232-
}, new F<Two<V, A>, FingerTree<V, Node<V, A>>>() {
233-
public FingerTree<V, Node<V, A>> f(final Two<V, A> two2) {
234-
final V2<A> v2 = two2.values();
235-
return append2(m, m1, mk.node2(v1._1(), v1._2()), mk.node2(v2._1(), v2._2()), m2);
236-
}
237-
}, new F<Three<V, A>, FingerTree<V, Node<V, A>>>() {
238-
public FingerTree<V, Node<V, A>> f(final Three<V, A> three) {
239-
final V3<A> v2 = three.values();
240-
return append2(m, m1, mk.node3(v1._1(), v1._2(), v2._1()), mk.node2(v2._2(), v2._3()), m2);
241-
}
242-
}, new F<Four<V, A>, FingerTree<V, Node<V, A>>>() {
243-
public FingerTree<V, Node<V, A>> f(final Four<V, A> four) {
244-
final V4<A> v2 = four.values();
245-
return append2(m, m1, mk.node3(v1._1(), v1._2(), v2._1()), mk.node3(v2._2(), v2._3(), v2._4()), m2);
246-
}
247-
});
248-
}
249-
}, new F<Three<V, A>, FingerTree<V, Node<V, A>>>() {
250-
public FingerTree<V, Node<V, A>> f(final Three<V, A> three1) {
251-
final V3<A> v1 = three1.values();
252-
return p2.match(new F<One<V, A>, FingerTree<V, Node<V, A>>>() {
253-
public FingerTree<V, Node<V, A>> f(final One<V, A> one) {
254-
return append2(m, m1, mk.node2(v1._1(), v1._2()), mk.node2(v1._3(), one.value()), m2);
255-
}
256-
}, new F<Two<V, A>, FingerTree<V, Node<V, A>>>() {
257-
public FingerTree<V, Node<V, A>> f(final Two<V, A> two) {
258-
final V2<A> v2 = two.values();
259-
return append2(m, m1, mk.node3(v1), mk.node2(v2), m2);
260-
}
261-
}, new F<Three<V, A>, FingerTree<V, Node<V, A>>>() {
262-
public FingerTree<V, Node<V, A>> f(final Three<V, A> three2) {
263-
return append2(m, m1, mk.node3(v1), mk.node3(three2.values()), m2);
264-
}
265-
}, new F<Four<V, A>, FingerTree<V, Node<V, A>>>() {
266-
public FingerTree<V, Node<V, A>> f(final Four<V, A> four) {
267-
return append3(m, m1, mk.node3(v1), mk.node2(four.values()._1(), four.values()._2()),
268-
mk.node2(four.values()._3(), four.values()._4()), m2);
269-
}
270-
});
271-
}
272-
}, new F<Four<V, A>, FingerTree<V, Node<V, A>>>() {
273-
public FingerTree<V, Node<V, A>> f(final Four<V, A> four1) {
274-
final V4<A> v1 = four1.values();
275-
return p2.match(new F<One<V, A>, FingerTree<V, Node<V, A>>>() {
276-
public FingerTree<V, Node<V, A>> f(final One<V, A> one) {
277-
return append2(m, m1, mk.node3(v1._1(), v1._2(), v1._3()), mk.node2(v1._4(), one.value()), m2);
278-
}
279-
}, new F<Two<V, A>, FingerTree<V, Node<V, A>>>() {
280-
public FingerTree<V, Node<V, A>> f(final Two<V, A> two) {
281-
final V2<A> v2 = two.values();
282-
return append2(m, m1, mk.node3(v1._1(), v1._2(), v1._3()), mk.node3(v1._4(), v2._1(), v2._2()), m2);
283-
}
284-
}, new F<Three<V, A>, FingerTree<V, Node<V, A>>>() {
285-
public FingerTree<V, Node<V, A>> f(final Three<V, A> three) {
286-
final V3<A> v2 = three.values();
287-
return append3(m, m1, mk.node3(v1._1(), v1._2(), v1._3()), mk.node2(v1._4(), v2._1()),
288-
mk.node2(v2._2(), v2._3()), m2);
289-
}
290-
}, new F<Four<V, A>, FingerTree<V, Node<V, A>>>() {
291-
public FingerTree<V, Node<V, A>> f(final Four<V, A> four2) {
292-
final V4<A> v2 = four2.values();
293-
return append3(m, m1, mk.node3(v1._1(), v1._2(), v1._3()), mk.node3(v1._4(), v2._1(), v2._2()),
294-
mk.node2(v2._3(), v2._4()), m2);
295-
}
296-
});
297-
}
298-
});
299-
}
198+
private static <V, A> FingerTree<V, Node<V, A>> addDigits0(
199+
final Measured<V, A> m, final FingerTree<V, Node<V, A>> m1,
200+
final Digit<V, A> s1, final Digit<V, A> p2,
201+
final FingerTree<V, Node<V, A>> m2) {
202+
203+
final MakeTree<V, A> mk = mkTree(m);
204+
return s1.match(
205+
one1 -> {
206+
return p2.match(
207+
one2 -> append1(m, m1, mk.node2(one1.value(), one2.value()), m2),
208+
two2 -> {
209+
final V2<A> vs = two2.values();
210+
return append1(m, m1, mk.node3(one1.value(), vs._1(), vs._2()), m2);
211+
},
212+
three -> {
213+
final V3<A> vs = three.values();
214+
return append2(m, m1, mk.node2(one1.value(), vs._1()), mk.node2(vs._2(), vs._3()), m2);
215+
},
216+
four -> {
217+
final V4<A> vs = four.values();
218+
return append2(m, m1, mk.node3(one1.value(), vs._1(), vs._2()), mk.node2(vs._3(), vs._4()), m2);
219+
}
220+
);
221+
},
222+
two1 -> {
223+
final V2<A> v1 = two1.values();
224+
return p2.match(
225+
one -> append1(m, m1, mk.node3(v1._1(), v1._2(), one.value()), m2),
226+
two2 -> {
227+
final V2<A> v2 = two2.values();
228+
return append2(m, m1, mk.node2(v1._1(), v1._2()), mk.node2(v2._1(), v2._2()), m2);
229+
},
230+
three -> {
231+
final V3<A> v2 = three.values();
232+
return append2(m, m1, mk.node3(v1._1(), v1._2(), v2._1()), mk.node2(v2._2(), v2._3()), m2);
233+
},
234+
four -> {
235+
final V4<A> v2 = four.values();
236+
return append2(m, m1, mk.node3(v1._1(), v1._2(), v2._1()), mk.node3(v2._2(), v2._3(), v2._4()), m2);
237+
}
238+
);
239+
},
240+
three1 -> {
241+
final V3<A> v1 = three1.values();
242+
return p2.match(
243+
one -> append2(m, m1, mk.node2(v1._1(), v1._2()), mk.node2(v1._3(), one.value()), m2),
244+
two -> {
245+
final V2<A> v2 = two.values();
246+
return append2(m, m1, mk.node3(v1), mk.node2(v2), m2);
247+
},
248+
three2 -> append2(m, m1, mk.node3(v1), mk.node3(three2.values()), m2),
249+
four -> append3(m, m1, mk.node3(v1),
250+
mk.node2(four.values()._1(), four.values()._2()),
251+
mk.node2(four.values()._3(), four.values()._4()), m2
252+
)
253+
);
254+
},
255+
four1 -> {
256+
final V4<A> v1 = four1.values();
257+
return p2.match(
258+
one -> append2(m, m1, mk.node3(v1._1(), v1._2(), v1._3()), mk.node2(v1._4(), one.value()), m2),
259+
two -> {
260+
final V2<A> v2 = two.values();
261+
return append2(m, m1, mk.node3(v1._1(), v1._2(), v1._3()), mk.node3(v1._4(), v2._1(), v2._2()), m2);
262+
},
263+
three -> {
264+
final V3<A> v2 = three.values();
265+
return append3(m, m1, mk.node3(v1._1(), v1._2(), v1._3()), mk.node2(v1._4(), v2._1()), mk.node2(v2._2(), v2._3()), m2);
266+
},
267+
four2 -> {
268+
final V4<A> v2 = four2.values();
269+
return append3(m, m1, mk.node3(v1._1(), v1._2(), v1._3()), mk.node3(v1._4(), v2._1(), v2._2()), mk.node2(v2._3(), v2._4()), m2);
270+
}
271+
);
272+
}
273+
);
274+
}
300275

301276
private static <V, A> FingerTree<V, Node<V, A>> append1(final Measured<V, A> m, final FingerTree<V, Node<V, A>> xs,
302277
final Node<V, A> a, final FingerTree<V, Node<V, A>> ys) {

0 commit comments

Comments
 (0)