public override Value Evaluate(FSharpList <Value> args) { double x, y, z; x = ((Value.Number)args[0]).Item; y = ((Value.Number)args[1]).Item; z = ((Value.Number)args[2]).Item; if (_vector == null) { _vector = Vector.by_coordinates(x, y, z); } else { _vector.set_x(x); _vector.set_y(y); _vector.set_z(z); } return(Value.NewContainer(_vector)); }