class Joiners { public static LispList zipLists(Joiner joiner,LispList ls1,LispList ls2) { if(ls1.isEmpty()||ls2.isEmpty()) return LispList.empty(); else { T h = joiner.join(ls1.head(),ls2.head()); LispList t = zipLists(joiner,ls1.tail(),ls2.tail()); return t.cons(h); } } }