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

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

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

List.unfold介绍

[英]Caution: not stack safe
[中]注意:不是堆栈安全的

代码示例

代码示例来源:origin: fpinjava/fpinjava

public static List<Integer> range(int start, int end) {
 return List.unfold(start, i -> i < end
   ? Result.success(new Tuple<>(i, i + 1))
   : Result.empty());
}

代码示例来源:origin: fpinjava/fpinjava

public static <A, S> List<A> unfold(S z, Function<S, Result<Tuple<A, S>>> f) {
 return unfold(list(), z, f).eval().reverse();
}

代码示例来源:origin: fpinjava/fpinjava

private static <A, S> TailCall<List<A>> unfold(List<A> acc, S z, Function<S, Result<Tuple<A, S>>> f) {
 Result<Tuple<A, S>> r = f.apply(z);
 Result<TailCall<List<A>>> result = r.map(rt -> sus(() -> unfold(acc.cons(rt._1), rt._2, f)));
 return result.getOrElse(ret(acc));
}

代码示例来源: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);
}

代码示例来源:origin: fpinjava/fpinjava

@Test
public void testListFoldLeft() {
 List<Integer> list1 = List.unfold(0, i -> i < 20
   ? Result.success(new Tuple<>(i, i + 1))
   : Result.empty());
 List<Integer> list2 = list1.foldLeft(List.list(), l -> i -> l.reverse().cons(i).reverse());
 assertEquals(list1, list2);
}

代码示例来源:origin: fpinjava/fpinjava

@Test
public void testListFoldLeft() {
 List<Integer> list1 = List.unfold(0, i -> i < 20
   ? Result.success(new Tuple<>(i, i + 1))
   : Result.empty());
 List<Integer> list2 = list1.foldLeft(List.list(), l -> i -> l.reverse().cons(i).reverse());
 assertEquals(list1, list2);
}

代码示例来源:origin: fpinjava/fpinjava

public <B, C> List<C> zipWithAll(List<B> s2, Function<Tuple<Result<A>, Result<B>>, C> f) {
 Function<Tuple<List<A>, List<B>>, Result<Tuple<C, Tuple<List<A>, List<B>>>>> g = x -> x._1.isEmpty() && x._2.isEmpty()
   ? Result.empty()
   : x._2.isEmpty()
     ? Result.success(new Tuple<>(f.apply(new Tuple<>(Result.success(x._1.head()), Result.empty())), new Tuple<>(x._1.tail(), List.<B> list())))
     : x._1.isEmpty()
       ? Result.success(new Tuple<>(f.apply(new Tuple<>(Result.empty(), Result.success(x._2.head()))), new Tuple<>(List.<A> list(), x._2.tail())))
       : Result.success(new Tuple<>(f.apply(new Tuple<>(Result.success(x._1.head()), Result.success(x._2.head()))), new Tuple<>(x._1.tail(), x._2.tail())));
 return unfold(new Tuple<>(this, s2), g);
}

代码示例来源:origin: fpinjava/fpinjava

List<Point> lp = List.unfold(heap, hp -> hp.head().flatMap(h -> hp.tail().map(t -> new Tuple<>(h, t))));
System.out.println(points);
System.out.println(lp);

代码示例来源:origin: fpinjava/fpinjava

List<Point> lp = List.unfold(heap, hp -> hp.head().flatMap(h -> hp.tail().map(t -> new Tuple<>(h, t))));
System.out.println(points);
System.out.println(lp);

相关文章