The MATCH dialect (and its family: TYPECHECK, ENSURE, NON, PROHIBIT) once had a "clever" idea for the use of the NULL antiform in the typeset parameter.
The idea was to use it as a shorthand for checking nulls. This was most useful for PROHIBIT:
>> value: null
>> prohibit null value
** Error: PROHIBIT of ~null~ got null
There are now a lot of other ways to say that:
>> prohibit null?/ value
** Error: PROHIBIT of NULL? got null
>> prohibit [null?] value
** Error: PROHIBIT of [null?] got null
>> prohibit [~null~] value
** Error: PROHIBIT of [~null~] got null
Using those, it takes between 2-4 more characters to say it, but...
...using NULL like this creates unnecessary danger of taking a null value literally!
>> typeset: null ; will assign this later...
; but you forget to set it...
>> prohibit typeset value
; check against null, when error was desired
When you understand the real systemic purpose of NULL, you understand you should not dialect it this way.
While you should "never say never", I feel fairly comfortable saying you shouldn't be dialecting nulls. It's a state that means you haven't got around to setting something yet--but you still want to be able to use casual logic tests to know if it's set yet.