While studying Scheme, I had wondered how 'begin' might reduce to
something simpler.
While reading "Lambda: The Ultimate Imperative", I see that in
Scheme, because of eager evaluation (aka call-by-value aka applicative
order), lambda can be used to model imperative statements. So, these
expressions are equivalent (each prints 'abc'):
(begin
(display 'a)
(display 'b)
(display 'c))
((lambda (x) ((lambda (x) (display 'c)) (display 'b))) (display 'a))
Is this the right way to understand begin? To implement it?