Why isn't Null a constant in Blitz?

Blitz3D Forums/Blitz3D Programming/Why isn't Null a constant in Blitz?

Null really is not constant.

When you Delete a Type object it isn't actually deleted. It is moved to an 'inactive objects' list. Any variable referring to such an object is considered Null, even though the value of that variable is not zero. A call to New will recycle an inactive object, if one is available, rather than allocate new memory.

This speeds up the New/Delete system, but has the annoying side effect that Null is not a valid default value.

It's usually not too hard to work around this.
The Avg ( 2 [no of vectors], v1.vector , v2.vector , v3.vector, v4.vector ) is one example. You can't have a variable number of type arguments, so the [number of vectors] argument is needed. You must then supply four vectors no matter how many you really wanted. Example:

Avg ( 2 , v1, v2 , v1, v1 )

to average the first two vectors. The final v1,v1 will be ignored.