001 package listFW.visitor; 002 003 import listFW.*; 004 005 /** 006 * Sums a IList<Integer> using a forward accumulation algorithm. 007 * Demonstrates that passing a non-parameterized value through a varargs is no problem. 008 * @author Mathias Ricken - Copyright 2008 - All rights reserved. 009 */ 010 public class SumIntList_Fwd implements IListAlgo<Integer,Integer, Object> { 011 012 public Integer emptyCase(IMTList<? extends Integer> host, Object ... inp) { 013 return 0; 014 } 015 public Integer nonEmptyCase(INEList<? extends Integer> host, Object ... inp) { 016 return host.getRest().execute(helper, host.getFirst()); 017 } 018 019 private IListAlgo<Integer,Integer, Integer> helper = new IListAlgo<Integer,Integer, Integer> (){ 020 public Integer emptyCase(IMTList<? extends Integer> host, Integer ... acc) { 021 return acc[0]; 022 } 023 public Integer nonEmptyCase(INEList<? extends Integer> host, Integer ... acc) { 024 return host.getRest().execute(this, host.getFirst() + acc[0]); 025 } 026 }; 027 }