> I don't think we need -each-in-list if we define -and to work that way: it returns the first Nothing/Left if there is one, or the last Just/Right if there isn't. This is exactly how standard Scheme `and` works. If there are no arguments, you get a wrapped #t.
There's a difference to the standard `and' because `each-in-list' is
not a special form and all arguments will be evaluated.
That's true, but we are looking at macros here.
I have to think of how much `-and' and `-or' without any argument make
sense logically.
Their boolean versions are standard, and they are allowed because macros sometimes generate them, just as (+) and (*) are. (Generate the degenerate!)
In any case, the payload of the Just/Right or the
Left would have nothing to do with truth or the falsehood of the
`-and' or `-or' form.
That's true.
So wrapping `#t' or `#f' is definitely not "the
right thing".
Zero values may make sense, so that, say,
Zero values continue to be more irritating to handle in Scheme-as-it-is than one value. I grant you that which value it is doesn't matter, and in fact it could be "Left/Either of an unspecified value".