Hi James,
it would fail if using SET("POINT") as the decimal point constitutes a valid number, because TYPE() only works with ".". TYPE() would also include the exponential syntax making "1.2e345" a valid number. Finally, the function would return number for many expressions such as "1+1", "_Screen.Height", "LEN(goApp.Login.Password)", and so forth.
It's not really an issue with TYPE(), rather with the definition of number in the application context. If TYPE() returns "N", EVALUTE() would return a number. It doesn't mean, though, that the parameter contains a number literal.
--
Christof