You can write your own boolean expression evaluator if you are unhappy with VFP's implementation.
But i'm happy.
I have confirmed the correctness of the VFP behavior.
My original message it is not clearly ?
? .NULL. AND m.X <=== must return .F. if m.X, then m.X must to be evaluated
VFP eval m.X