`and`

and `or`

evaluate all their arguments in order, similar
to `begin`

, but evaluation stops as soon as one of the expressions
evaluates to false or true, respectively.

— syntax: **and**` expr ...`

Evaluate the

exprs from left to right and stop evaluation as soon as one expression evaluates to`#f`

; the remaining expressions are not evaluated. The value of the last evaluated expression is returned. If no expression evaluates to`#f`

, the value of the last expression is returned.If used without expressions,

`#t`

is returned.

— syntax: **or**` expr ...`

Evaluate the

exprs from left to right and stop evaluation as soon as one expression evaluates to a true value (that is, a value different from`#f`

); the remaining expressions are not evaluated. The value of the last evaluated expression is returned. If all expressions evaluate to`#f`

,`#f`

is returned.If used without expressions,

`#f`

is returned.