On Sat, Jun 27, 2020 at 4:46 PM Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de> wrote:

> 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".

John Cowan          http://vrici.lojban.org/~cowan        xxxxxx@ccil.org
All "isms" should be "wasms".   --Abbie