QUOTE(Synthetic Soul @ Feb 24 2006, 02:29 PM)
Tagz's variables are variants. This means that they have no type, but can be converted to boolean or integer values by the script parser when used in comparisons or tests. For boolean values, generally
any existing value (including 0) converts to TRUE, and nothing/null converts to FALSE.
Not quite, the type system of formatting scripts is not that advanced.

Every expression has a string and a boolean value, and variables only store string values. Whenever a function needs to interprete a value as an integer, the value has to be converted. Also, functions have to convert numeric results to string. There is
no conversion for string to boolean or boolean to string.
The boolean value of all string constants (including the empty string) is false. So there really is no difference between "$if(true,<whatever>)" and "$if(,<whatever>)". However, there is difference between "$if($not(true),true,false)" and "$if($not(),true,false)": "$not(true)" evaluates to true, since "true" (as a string constant) evaluates to false. "$not()" on the other side evaluates to false, since it is called with an invalid number of arguments (zero).
I really need to write a wiki article about handling of boolean values sometime (and also update the titleformatting reference article accordingly).