Example #1
0
  /** Returns a flat list of variables held by this LambdaList. */
  public Object vars() {
    if (this.vars != null) return this.vars;

    Object ret = Symbols.NIL;
    // whole
    if (this.whole != null) ret = Lists.nconc(this.whole.vars(), ret);
    // required
    for (int i = 0; i < this.required.length; i++) ret = Lists.nconc(this.required[i].vars(), ret);
    // optional
    for (int i = 0; i < this.optional.length; i++) ret = Lists.nconc(this.optional[i].vars(), ret);
    // rest
    if (this.rest != null) ret = Lists.nconc(this.rest.vars(), ret);
    // keyword
    for (int i = 0; i < this.keyword.length; i++) ret = Lists.nconc(this.keyword[i].vars(), ret);
    // aux
    for (int i = 0; i < this.aux.length; i++) ret = Lists.nconc(this.aux[i].vars(), ret);

    this.vars = ret;

    return ret;
  }