This kind of thing is so frustrating because enormous effort has been put into solving exactly one VARIANT of a pretty <i>general</i> problem.  The general case is: at a <i>particular</i> point in the code, is $THIS_DATA usable or not, for some appropriate definition of “usable” in that code?<p>And if “usable” has <i>any</i> additional meaning besides “is not null”, <i>this entire machinery is useless</i> because one STILL has to figure out the state of the data!<p>For example, what if you are sanitizing input from a user and there is a “wall” in your code beyond which a string is considered safe (e.g. decoded, evaluated by regex, or whatever is supposed to happen)?  Or, what if “usable” means that a server has been connected to, or a database opened, or a calculation completed, or whatever else you want to say?  What if it’s a numerical denominator and you want it to be nonzero?  The list could go on and on, and none of these architectures deals with ANY of those possibilities.