Hi Mark, I've pushed the first two of the patches you attached in http://thread.gmane.org/gmane.lisp.guile.devel/8853. Thanks very much, this adds awesome to Guile!
For the rest of us: the first patch is the boolean-hypercube thing, so that we can, in the future, efficiently check if a value is '() or nil but not #f. The second patch adapts some boolean/end-of-list checks in the VM to be more permissive, and accept nil. There are two more patches in your series that make similar tweaks in other parts of Guile, but what I would prefer would be patches to change existing scm_is_false / scm_is_null / scm_is_true invocations to their false_and_not_nil equivalents, in those very few places in which this is necessary. Then we can switch scm_is_false to be scm_is_false_or_nil. I just did a grep and for one of those, like scm_is_false, and there were about 200 places. But it seemed fairly clear in most cases which thing it should be, so it sounds like just an hour's work or two. I'd rather not spice up the rest of the source with nil-knowledge if we can avoid it. Thanks again for the great patches! We would of course appreciate any more patches that you are hiding :-) Andy -- http://wingolog.org/