本文整理了Java中com.fpinjava.common.Tuple.<init>()
方法的一些代码示例,展示了Tuple.<init>()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Tuple.<init>()
方法的具体详情如下:
包路径:com.fpinjava.common.Tuple
类名称:Tuple
方法名:<init>
暂无
代码示例来源:origin: fpinjava/fpinjava
public Stream<A> takeViaUnfold(int n) {
return unfold(new Tuple<>(this, n), x -> x._1.isEmpty()
? Result.empty()
: x._2 > 0
? Result.success(new Tuple<>(x._1.head()._1, new Tuple<>(x._1.tail(), x._2 - 1)))
: Result.empty());
}
代码示例来源: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
@Override
public Tuple<Result<A>, Stream<A>> headOption() {
Tuple<A, Stream<A>> t = head();
return new Tuple<>(Result.success(t._1), t._2);
}
代码示例来源:origin: fpinjava/fpinjava
public static Tuple<List<Integer>, RNG> integers(RNG rng, int length) {
Tuple<List<Tuple<Integer, RNG>>, RNG> result = List.range(0, length).foldLeft(new Tuple<>(List.list(), rng), tuple -> i -> {
Tuple<Integer, RNG> t = integer(tuple._2);
return new Tuple<>(tuple._1.cons(t), t._2);
});
List<Integer> list = result._1.map(x -> x._1);
return new Tuple<>(list, result._2);
}
代码示例来源:origin: fpinjava/fpinjava
static <A, B> Random<B> map(Random<A> s, Function<A, B> f) {
return rng -> {
Tuple<A, RNG> t = s.apply(rng);
return new Tuple<>(f.apply(t._1), t._2);
};
}
代码示例来源:origin: fpinjava/fpinjava
@Override
public Tuple<A, Stream<A>> head() {
A a = h.getOrElse(head.get());
return h.isEmpty()
? new Tuple<>(a, new Cons<>(a, tail))
: new Tuple<>(a, this);
}
代码示例来源:origin: fpinjava/fpinjava
@Override
public Tuple<A, Stream<A>> head() {
A a = h.getOrElse(head.get());
return h.isEmpty()
? new Tuple<>(a, new Cons<>(a, tail))
: new Tuple<>(a, this);
}
代码示例来源:origin: fpinjava/fpinjava
private List<Tuple<List<A>, List<A>>> split_(List<A> list) {
List<Tuple<List<A>, List<A>>> yss = list.tail().split();
return yss.map(t -> new Tuple<>(t._1.cons(head), t._2)).cons(new Tuple<>(list(head), tail));
}
}
代码示例来源: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
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
static <A, B, C> Random<C> map2(Random<A> ra, Random<B> rb, Function<A, Function<B, C>> f) {
return rng -> {
Tuple<A, RNG> t1 = ra.apply(rng);
Tuple<B, RNG> t2 = rb.apply(t1._2);
return new Tuple<>(f.apply(t1._1).apply(t2._1), t2._2);
};
}
代码示例来源:origin: fpinjava/fpinjava
private <B> TailCall<Tuple<B, List<A>>> foldLeft(B acc, B zero, List<A> list, Function<B, Function<A, B>> f) {
return list.isEmpty() || acc.equals(zero)
? ret(new Tuple<>(acc, list))
: sus(() -> foldLeft(f.apply(acc).apply(list.head()), zero, list.tail(), f));
}
代码示例来源:origin: fpinjava/fpinjava
private <B> TailCall<Tuple<B, List<A>>> foldLeft(B acc, B zero, List<A> list, Function<B, Function<A, B>> f) {
return list.isEmpty() || acc.equals(zero)
? ret(new Tuple<>(acc, list))
: sus(() -> foldLeft(f.apply(acc).apply(list.head()), zero, list.tail(), f));
}
代码示例来源:origin: fpinjava/fpinjava
public static Result<Tuple<Person, Input>> person(Input input) {
return input.readInt("Enter ID:")
.flatMap(id -> id._2.readString("Enter first name:")
.flatMap(firstName -> firstName._2.readString("Enter last name:")
.map(lastName -> new Tuple<>(Person.apply(id._1,
firstName._1, lastName._1), lastName._2))));
}
}
代码示例来源:origin: fpinjava/fpinjava
private TailCall<Tuple<List<A>, List<A>>> splitAt(List<A> acc, List<A> list, int i) {
return i == 0 || list.isEmpty()
? ret(new Tuple<>(list.reverse(), acc))
: sus(() -> splitAt(acc.cons(list.head()), list.tail(), i - 1));
}
代码示例来源:origin: fpinjava/fpinjava
private TailCall<Tuple<List<A>, List<A>>> splitAt(List<A> acc, List<A> list, int i) {
return i == 0 || list.isEmpty()
? ret(new Tuple<>(list.reverse(), acc))
: sus(() -> splitAt(acc.cons(list.head()), list.tail(), i - 1));
}
代码示例来源:origin: fpinjava/fpinjava
public static <A, B, C> Rand<C> map2_(Rand<A> ra, Rand<B> rb, Function<A, Function<B, C>> f) {
return rng -> {
Tuple<A, RNG> t1 = ra.apply(rng);
Tuple<B, RNG> t2 = rb.apply(t1._2);
return new Tuple<>(f.apply(t1._1).apply(t2._1), t2._2);
};
}
代码示例来源:origin: fpinjava/fpinjava
public Tuple<List<A>, List<A>> splitAt_(int index) {
int ii = index < 0 ? 0 : index >= length() ? length() : index;
Tuple3<List<A>, List<A>, Integer> identity = new Tuple3<>(List.list(), List.list(), ii);
Tuple3<List<A>, List<A>, Integer> rt = foldLeft(identity, ta -> a -> ta._3 == 0 ? new Tuple3<>(ta._1, ta._2.cons(a), ta._3) : new Tuple3<>(ta._1.cons(a), ta._2, ta._3 - 1));
return new Tuple<>(rt._1.reverse(), rt._2.reverse());
}
代码示例来源:origin: fpinjava/fpinjava
public Tuple<List<A>, List<A>> splitAt_(int index) {
int ii = index < 0 ? 0 : index >= length() ? length() : index;
Tuple3<List<A>, List<A>, Integer> identity = new Tuple3<>(List.list(), List.list(), ii);
Tuple3<List<A>, List<A>, Integer> rt = foldLeft(identity, ta -> a -> ta._3 == 0 ? new Tuple3<>(ta._1, ta._2.cons(a), ta._3) : new Tuple3<>(ta._1.cons(a), ta._2, ta._3 - 1));
return new Tuple<>(rt._1.reverse(), rt._2.reverse());
}
代码示例来源:origin: fpinjava/fpinjava
@Test
public void testUnfoldBigStackSafe() throws Exception {
List<Integer> list = List.unfold(0, i -> i < 10000 ? Result.success(new Tuple<>(i, i + 1)) : Result.empty());
assertEquals(10000, list.length());
}
}
内容来源于网络,如有侵权,请联系作者删除!