[plt-scheme] Implicit begins (and programming style)

From: Thomas-Xavier MARTIN (txm+plt-scheme at m4x.org)
Date: Tue Nov 23 10:54:03 EST 2004

Disclaimer : I am aware that scheme code should be as functional as possible, 
and that begins are only necessary/useful/legitimate when side-effects are 
needed. But some programs need side-effects... So :

Which forms include an implicit begin ?

So far, I have noted :
- lambda, define (for procedures, not for variables)
- let, letrec, let*
- cond, when, unless (not if !)

Any others ? Any definitive list somewhere ?
Googling has given me this, which has a few more (case, do, fluid-let, 
named-lambda) :
but it does not pretend to be exhaustive...

Style-wise, should one write code with explicit begins even where they are not 
needed, for readability (apart from specific cases with heavy indentation, I 
do not see using explicit begins as more readable ; am I wrong ?) or on the 
contrary, avoid writing begins anyplace it is possible for conciseness ?

Since I mentionned Scheme programming style (this should probably be a 
separate post, sorry !), I have googled extensively for scheme style guides, 
and while I found two that are useful, they do not go as far as I would 

Any pointers to discussions or pages on Scheme programming style would be 
appreciated. Currently, I read as much code as I can, and try to imitate the 
style of what I find readable while avoiding the style of  what I can't 
parse. It's a good and tried method, but style guides allow for more 
efficient leveraging of other people's experience. 

Thomas-Xavier MARTIN
txm+plt-scheme at m4x.org

Posted on the users mailing list.