@Override public Value concatenate(Value v){
  if (v instanceof StringVal) {
    return ValueFactory.create(str + " " + v.toString());
  }
 else   if (v instanceof DoubleVal) {
    return ValueFactory.create(str + " " + v.toString());
  }
 else   if (v instanceof NoneVal) {
    return this;
  }
 else {
    log.warning("cannot concatenate " + this + " and "+ v);
    return ValueFactory.noneValue;
  }
}

@ Override public Value concatenate ( Value v ) { if ( v instanceof StringVal ) { return ValueFactory . create ( str + " " + v . toString ( ) ) ; } else if ( v instanceof DoubleVal ) { return ValueFactory . create ( str + " " + v . toString ( ) ) ; } else if ( v instanceof NoneVal ) { return this ; } else { log . warning ( "cannot concatenate " + this + " and " + v ) ; return ValueFactory . noneValue ; } }
returns the concatenation of the two values .
