com.fpinjava.common.List.foldRight()方法的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(5.0k)|赞(0)|评价(0)|浏览(137)

本文整理了Java中com.fpinjava.common.List.foldRight()方法的一些代码示例,展示了List.foldRight()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。List.foldRight()方法的具体详情如下:
包路径:com.fpinjava.common.List
类名称:List
方法名:foldRight

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);
}

相关文章