Hi there, I pose this question & suggestion here instead the users list, I hope that is fine in this context.

 

It is currently not possible to use „null“ as a default argument for scalar variables in function headers. It is, however, possible to use „NA“. My question: Is there a save procedure to use “!isnan(variable)” similar to “exists(matrix)” for function headers? Currently, this seems not possible (or I am making a mistake). E.g.:

 

<hansl>

scalar testNA = NA

scalar testNotNA = $pi

?testNA

?testNotNA

if isnan(testNA)

                printf "NA, isnan(testNA) evals to %f",isnan(testNA)

else

                printf "not NA, isnan(testNA) evals to %f",isnan(testNA)

endif

if isnan(testNotNA)

                printf "NA, isnan(testNotNA) evals to %f",isnan(testNotNA)

else

                printf "not NA, isnan(testNotNA) evals to %f",isnan(testNotNA)

endif

<\hansl>

 

This script produces wrong output. It (always) produces “0.000000?”, adding this “?” to the number and thus the statement always evaluates to “false” (and !isnan(), too).

 

This goes in direction of svens suggestion: “idea for the exists()/nelem() situation with lists” (following my confusion).

 

And then one other thing. In Python one can conveniently pass optional arguments via “argument_label=argument_value”, without having to care about the sorting/completeness of the argument list. If such a thing was possible in hansl, that would be very convenient!

 

Best

Frederik