One thing to note is that considering
<if @bool_p@> as false automatically (when the variable is not defined) opens you up to misspelling errors of the type <if @boolp@>, or <if @bol_p@> always silently returning false...