00001 00005 package edu.mit.csail.sdg.squander.examples.func; 00006 00007 import edu.mit.csail.sdg.squander.spec.SqFunc; 00008 import edu.mit.csail.sdg.squander.spec.SqFunc.Func; 00009 00010 public class Utils { 00011 00012 public static <R, E> R fold(Iterable<E> lst, R start, SqFunc.Binary<R, R, E> f) { 00013 R res = start; 00014 for (E e : lst) { 00015 res = f.exe(res, e); 00016 } 00017 return res; 00018 } 00019 00020 @SuppressWarnings("unchecked") 00021 public static <R, E> R fold(Iterable<E> lst, R start, Func f) { 00022 R res = start; 00023 for (E e : lst) { 00024 res = (R) f.exe(res, e); 00025 } 00026 return res; 00027 } 00028 }