我正在尝试为Java创建一个小函数式编程库(只是为了抓住我自己的痒).在为s,s和s 定义高阶函数时List,我遇到了这个问题:采用集合并返回相同类型集合的函数具有几乎相同的实现,但必须为每个函数重新定义数据结构 - s,s和s.SetMapListSetMap
例如,这里是s和s 的map函数的实现:ListSet
public static <A, B> List<B> map(
List<? extends A> xs,
Func1<? super A, ? extends B> transformer
) {
List<B> ys = new ArrayList<B>();
for(A a : xs) {
ys.add(transformer.apply(a));
}
return ys;
}
public static <A, B> Set<B> map(
Set<? extends A> xs,
Func1<? super A, ? extends B> transformer
) {
Set<B> ys = new HashSet<B>();
for(A a : xs) …Run Code Online (Sandbox Code Playgroud)