本文整理了Java中com.fpinjava.common.List.foldRight()
方法的一些代码示例,展示了List.foldRight()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。List.foldRight()
方法的具体详情如下:
包路径:com.fpinjava.common.List
类名称:List
方法名:foldRight
暂无
代码示例来源:origin: fpinjava/fpinjava
public List<A> filter(Function<A, Boolean> f) {
return foldRight(list(), h -> t -> f.apply(h) ? new Cons<>(h,t) : t);
}
代码示例来源:origin: fpinjava/fpinjava
public static <A> Rand<List<A>> sequence(List<Rand<A>> fs) {
return fs.foldRight(unit(List.list()),
f -> acc -> map2(f, acc, x -> y -> y.cons(x)));
}
代码示例来源:origin: fpinjava/fpinjava
public static Result<Integer> maxOption(List<Integer> list) {
return list.isEmpty()
? Result.empty()
: Result.success(list.tail().foldRight(list.head(), x -> y -> x > y ? x : y));
}
代码示例来源:origin: fpinjava/fpinjava
public static Result<Integer> minOption(List<Integer> list) {
return list.isEmpty()
? Result.empty()
: Result.success(list.tail().foldRight(list.head(), x -> y -> x < y ? x : y));
}
代码示例来源:origin: fpinjava/fpinjava
public static <A, B> Option<List<B>> traverse(List<A> list,
Function<A, Option<B>> f) {
return list.foldRight(some(List.list()),
x -> y -> map2(f.apply(x), y, a -> b -> b.cons(a)));
}
代码示例来源:origin: fpinjava/fpinjava
public static <E, A, B> Either<E, List<B>> traverse(List<A> as, Function<A, Either<E, B>> f) {
return as.foldRight(right(List.list()), a -> b -> f.apply(a).map2(b, x -> y -> y.cons(x)));
}
//
代码示例来源:origin: fpinjava/fpinjava
public static <A, B> Option<List<B>> traverse_(List<A> list, Function<A, Option<B>> f) {
return list.foldRight(some(List.list()), x -> y -> map2(f.apply(x), y, a -> b -> b.cons(a)));
}
代码示例来源:origin: fpinjava/fpinjava
private boolean isEquals(Cons<?> o) {
Function<Result<A>, Function<Result<?>, Boolean>> equals = x -> y -> x.flatMap(a -> y.map(a::equals)).getOrElse(() -> false);
return zipAll(o).foldRight(true, x -> y -> equals.apply(x._1).apply(x._2));
}
代码示例来源:origin: fpinjava/fpinjava
public <B> Map<B, List<A>> groupBy(Function<A, B> f) {
return foldRight(Map.empty(), t -> mt -> {
final B k = f.apply(t);
return mt.put(k, mt.get(k).getOrElse(list()).cons(t));
});
}
代码示例来源:origin: fpinjava/fpinjava
public <A1, A2> Tuple<List<A1>, List<A2>> unzip(Function<A, Tuple<A1, A2>> f) {
return this.foldRight(new Tuple<>(list(), list()), a -> tl -> {
Tuple<A1, A2> t = f.apply(a);
return new Tuple<>(tl._1.cons(t._1), tl._2.cons(t._2));
});
}
代码示例来源:origin: fpinjava/fpinjava
@Test
public void testRepeat() {
Stream<Integer> stream = Stream.repeat(2);
assertEquals(Integer.valueOf(8), stream.take(4).toList().foldRight(0, x -> y -> x + y));
}
}
代码示例来源:origin: fpinjava/fpinjava
@Test
public void testRepeat() {
Stream<Integer> stream = Stream.repeat(2);
assertEquals(Integer.valueOf(8), stream.take(4).toList().foldRight(0, x -> y -> x + y));
}
}
代码示例来源:origin: fpinjava/fpinjava
@Test
public void testFrom() {
Stream<Integer> stream = Stream.from(2);
assertEquals(Integer.valueOf(14), stream.take(4).toList().foldRight(0, x -> y -> x + y));
}
代码示例来源:origin: fpinjava/fpinjava
@Test
public void testRepeat() {
Stream<Integer> stream = Stream.repeat(2);
assertEquals(Integer.valueOf(8), stream.take(4).toList().foldRight(0, x -> y -> x + y));
}
}
代码示例来源:origin: fpinjava/fpinjava
@Test
public void testRepeat() {
Stream<Integer> stream = Stream.repeat(2);
assertEquals(Integer.valueOf(8), stream.take(4).toList().foldRight(0, x -> y -> x + y));
}
}
代码示例来源:origin: fpinjava/fpinjava
@Test
public void testFrom() {
Stream<Integer> stream = Stream.from(2);
assertEquals(Integer.valueOf(14), stream.take(4).toList().foldRight(0, x -> y -> x + y));
}
代码示例来源:origin: fpinjava/fpinjava
@Test
public void testFold() {
int limit = 50;
List<Integer> list = List.range(1, limit + 1);
List<String> expected = list.map(NumbersToEnglish.convertUS);
Map<Integer, String> map = list.foldRight(Map.<Integer, String>empty(), i -> m -> m.add(i, NumbersToEnglish.convertUS.apply(i)));
List<String> list2 = map.values();
assertTrue(expected.equals(list2));
}
}
代码示例来源:origin: fpinjava/fpinjava
@Test
public void testFold2() {
int limit = 50;
List<Integer> list = List.range(1, limit + 1);
List<String> expected = list.map(NumbersToEnglish.convertUS);
Map<Integer, String> map = list.foldRight(Map.<Integer, String>empty(), i -> m -> m.add(i, NumbersToEnglish.convertUS.apply(i)));
List<String> list2 = map.values();
assertTrue(expected.equals(list2));
}
}
代码示例来源:origin: fpinjava/fpinjava
@Test
public void testListFoldRight() {
List<Integer> list1 = List.unfold(0, i -> i < 20
? Result.success(new Tuple<>(i, i + 1))
: Result.empty());
List<Integer> list2 = list1.foldRight(List.list(), i -> l -> l.cons(i));
assertEquals(list1, list2);
}
代码示例来源:origin: fpinjava/fpinjava
@Test
public void testListFoldRight() {
List<Integer> list1 = List.unfold(0, i -> i < 20
? Result.success(new Tuple<>(i, i + 1))
: Result.empty());
List<Integer> list2 = list1.foldRight(List.list(), i -> l -> l.cons(i));
assertEquals(list1, list2);
}
内容来源于网络,如有侵权,请联系作者删除!