Never mind the inability to define default / infinite arguments - causing the call to have to pass all forms inside one list!
What I still can't figure out how to accomplish is to stop pre-evaluation of arguments. You'll notice the CLHS defines and/or as macros instead of functions. That means none of the forms are evaluated prior to and/or is called - then they're only called one at a time until the boolean logic causes the macro to stop.
Therefore you can do something like this for global values:
In current AL that won't only not give the correct result, but would have no efficiency gain (since both the forms are evaluated prior to passing it to _or).
You could of course quote the forms individually, but then it's breaking from what normal lisp coders would expect.
I suppose one could do something like this:
(defun _and
(forms
/ result
) result)
But that means to use it you need to call it thus:
In which case, you loose the elegance of your code in order to jump through the limitation hoops of AL.