[plt-scheme] caution about use of 'pair?' in programs with mutable pairs?

Matthias Felleisen matthias at ccs.neu.edu
Mon Jan 14 19:13:50 EST 2008


On Jan 14, 2008, at 3:06 PM, John Clements wrote:

> I feel lucky not to have been bitten by this, but I can see some  
> potentially very painful bugs possible in a switchover from v3 code  
> to v4 code; in particular, code that uses 'pair?' to distinguish  
> empty from nonempty lists could misclassify mpairs as nulls,  
> leading to some very unpleasant "non-fail-fast" errors.  Instead,  
> it would seem to be wiser here to use (not (null? ...)) rather than  
> (pair? ...)

I don't understand your remark. When you know pair? of some value v,  
you can use car/cdr. If you know (not (null? v)), what do you really  
know?

-- Matthias




More information about the plt-scheme mailing list