> And it has to be error, not just a warning. Otherwise the warning just
> flashes by while you're getting some coffee.
That's the point - it is an error under your interpretation only. It's
still perfectly legal code, even if it may not make sense.
It's also an error under R5RS, which defines this kind of begin (the
_expression_ type as opposed to the top-level type with mixed
definitions and expressions) as (begin <_expression_-1> <_expression_-2> ...).
See section 4.2.3 of R5RS (same story in R7RS).
That doesn't mean an implementation *can't* assign a meaning to
(begin), but I wouldn't call it "perfectly legal", except in the sense
that (if) or (if #t) are perfectly legal (which are syntax errors in Chicken).
--
Overhead, without any fuss, the stars were going out.
--Arthur C. Clarke, "The Nine Billion Names of God"