[following up to myself, duh!]
Fearlessly plunging ahead, I found the source for SB!IMPL:REPL and see
that it uses PRIN1 to print results. I also discovered *PRINT-CIRCLE*
in the CL standard. Does it make sense to change (prin1 result) to
(let ((*print-circle* t)) (prin1 result))? That avoids the infinite
loop but does not match the ACL output. In the mean time, I guess I
will globally set *PRINT-CIRCLE* to T.