package com.googlecode.totallylazy;
import com.googlecode.totallylazy.functions.CurriedCombiner;
import com.googlecode.totallylazy.functions.Function1;
import java.util.ArrayList;
import java.util.List;
import static com.googlecode.totallylazy.Sequences.sequence;
public class Lists {
public static <T> List<T> list() {
return new ArrayList<>();
}
public static <T> List<T> one(T instance) {
List<T> list = list();
list.add(instance);
return list;
}
@SafeVarargs
public static <T> List<T> list(T... values) {
return list(sequence(values));
}
public static <T> List<T> list(Iterable<? extends T> iterable) {
return sequence(iterable).toList();
}
public static <T> Function1<T, Integer> indexIn(final List<? extends T> values) {
return values::indexOf;
}
public static class functions {
public static <T> CurriedCombiner<T, List<T>> add() {
return new CurriedCombiner<T, List<T>>() {
@Override
public List<T> combine(List<T> a, List<T> b) throws Exception {
List<T> result = identity();
result.addAll(a);
result.addAll(b);
return result;
}
@Override
public List<T> call(List<T> rs, T t) throws Exception {
rs.add(t);
return rs;
}
@Override
public List<T> identity() {
return new ArrayList<T>();
}
};
}
}
}