package fj.java.util;
import fj.F;
import fj.F2;
import java.util.List;
/**
* Created by MarkPerry on 28/08/2015.
*/
public class ListUtil {
public static <A, B> List<B> map(List<A> list, F<A, B> f) {
return fj.data.List.iterableList(list).map(f).toJavaList();
}
public static<A> List<A> filter(List<A> list, F<A, Boolean> f) {
return fj.data.List.iterableList(list).filter(f).toJavaList();
}
public static <A, B> B fold(List<A> list, F2<B, A, B> f, B b) {
return fj.data.List.iterableList(list).foldLeft(f, b);
}
public static <A, B> List<B> flatMap(List<A> list, F<A, List<B>> f) {
return fj.data.List.iterableList(list).bind(a -> fj.data.List.iterableList(f.f(a))).toJavaList();
}
public static <A, B> List<B> bind(List<A> list, F<A, List<B>> f) {
return flatMap(list, f);
}
}