package tarau.jinni;
/**
  List Constructor. Cooperates with terminator Nil.

  @see Nil
*/
public class Cons extends Fun {
  public Cons(String cons,Term x0, Term x1) {
    super(cons,x0,x1);
  }

  public Cons(Term x0, Term x1) {
    this(".",x0,x1);
  }
  public Term getHead() {    return getArg(0);  }    public Term getTail() {    return getArg(1);  }  
  /**
    List printer.
  */
  public String toString() {
    Term h=getArg(0);
    Term t=getArg(1);
    StringBuffer s=new StringBuffer("["+watchNull(h));
      for(;;) {
        if(t instanceof Nil) {
           s.append("]"); break;
        }
        else if(t instanceof Cons) {
          h=((Cons)t).getArg(0);
          t=((Cons)t).getArg(1);
          s.append(","+watchNull(h));
        }
        else {
          s.append("|"+watchNull(t)+"]"); break;
        }
      }
    return s.toString();
  }
}
