[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


Some people detected that DRIBBLE in KCL works quite differently from
other, American Common Lisp systems.  The differences certainly came
from the incomplete description of DRIBBLE (page 443).  While other
debugging tools depend highly on implementatins, DRIBBLE could be given
more detailed definition independent of the implementation.  Here are my
inquiries which, I think, should be made clear.

1. Is it an error to turn DRIBBLE on, while it is on already?
If it is allowed, then what action should the system take?   Especially,
"which DRIBBLE" should (DRIBBLE) turn off?

2. Does (DRIBBLE <pathname>) supercede the specified file if it exists
already?  Or, does it append?  Do you need any additional parameter to
specify this?

3. Which stream variables should (DRIBBLE <pathname>) rebind?  CLtL says
only that (DRIBBLE <pathname>) rebinds *STANDARD-INPUT* and *STANDARD-OUTPUT*.
What about other variables such as *TERMINAL-IO* ?

4. Suppose that (DRIBBLE <pathname>) rebinds *STANDARD-INPUT*.  Are the
followings are legal uses of DRIBBLE?  If legal, what actions should the
system take?

	>(dribble "foo.log")
	>(let ((*standard-input* ...))

	>(let ((*standard-input* ...))
	   (dribble "foo.log")

Note:  Currently, KCL causes an error in the case of 4a.  This is because,
at the exit from the LET form, *STANDARD-OUTPUT* is rebound to a broadcast
stream that includes an already closed stream to foo.log.

-- Taiichi