If there are accumulators, their final values will be returned if no
final-expr is given.
(loop ((:for a (up-from 1 11))
(:acc lst (listing (* a a))))
=> lst)
becomes simply:
(loop ((:for a (up-from 1 11))
(:acc lst (listing (* a a)))))
This marks a deviation from the foof-loop inheritance, and a path
towards a more lexical scope. :for clauses are now bound to the top of
each loop, and the following :bind, :when, :unless, :break, :final and
:acc clauses now follow a the lexical order of when they were
introduced... At least, that's the plan. This commit makes :for, :bind,
:when, :unless and :break work. The rest is broken.
and :let+:let* are no more.
The third clause (the "check" clause) now breaks the entire
iteration for :acc clauses instead of just exiting the current subloop.
This is much saner, and was immediately usable in vectoring.
Everything in goof-impl.scm is portable (r7rs) syntax-rules. The non-portable parts
, most notably the let-kw-form macro is in the module definition goof.scm.