package listFW.visitor; import listFW.*; /** * Computes a Scheme-like String representation of a list. Uses a helper * visitor to compute the String representaion of the rest to avoid having an * extra space before closing the parenthesis. * @author D. X. Nguyen */ public class ToString implements IListAlgo { public static final ToString Singleton = new ToString (); private ToString() { } /** * Return "()" as in Scheme. * @param host empty not used * @param nu not used * @return String */ public Object emptyCase(IEmptyList host, Object nu) { return "()"; } /** * Concatenates "(" with the host's first and the String representation of * the host's rest computed by a helper visitor. * @param host a non-empty list. * @param nu not used * @return String */ public Object nonEmptyCase(INEList host, Object input) { return "(" + host.getFirst() + host.getRest().execute(HelpToString.Singleton, null); } }