Hi, sometimes I was under the impression that hansl supports lazy evaluation of boolean expressions, and sometimes I thought that no, it doesn't. And turns out I was right because it seems to depend. Consider this:

<hansl>

clear    # neither a nor b exist
eval 1==2 && a==b    # lazy works, FALSE no matter what a or b
eval 1==1 || a==b   # lazy fails, even though it's always TRUE

</hansl>

For me a frequent use case for the OR case is a function argument check with a null default, something like:

if !exists(s) || s==""

So of the string argument s was passed into the function as 'null' the first part is TRUE, but gretl still goes on to check s=="" and then complains that s isn't defined.

I think it would be good to have lazy evaluation also in the OR case. Or --to make it less confusing-- ban it entirely, also for the AND case, although I'm not in favor of that.

I can think of some subtleties concerning NA values and lazy boolean evaluations, but then again, we already have it partly, so it doesn't seem to be so problematic.

cheers

sven