Lisp HUG Maillist Archive

LW DRIBBLE (& Tab Completion)

Hi all, I'm on LWM6.0 (and use tab completion) and was a bit surprised
at what DRIBBLE put in its output file.  Anyone know if this is
intended behavior or just a quirk?  "dribble is intended to create a
readable record of an interactive session" [1], and there's a sense in
DRIBBLE's output qualifies, but this diminishes in even slightly more
complex cases.  Illustrations follow.  (This isn't a huge issue for
me;  the only reason I was using DRIBBLE at all was that I was trying
to record a session that hangs the IDE, and so from which I can't copy
and paste the Listener session after the bug.)

[1] http://www.lispworks.com/documentation/HyperSpec/Body/f_dribbl.htm

A session in the Listener:

CL-USER 1 >
(dribble "~/Desktop/dribble2.txt")
; Loading /Applications/LispWorks
6.0/Library/lib/6-0-0-0/load-on-demand/ccl/dribble.xfasl on demand...
Error while reading: Symbol "MAKE-IN" not found at all in the CAPI package.

"""
CL-USER 2 >
(defparameter *interface*
  (capi:display (make-instance 'capi:interface)))
*INTERFACE*

CL-USER 3 >
(capi:prompt-for-file "pick a file" :owner *interface*)
NIL
NIL
NIL

CL-USER 4 >
(dribble)
; Closed dribble to "~/Desktop/dribble2.txt"
"""

The corresponding dribble output:

"""
CL-USER 2 >
(defpar
(defparameter *interface*
  (capi:displa
(defparameter *interface*
  (capi:display (make-in
(defparameter *interface*
  (capi:display (make-instance 'capi:interf
(defparameter *interface*
  (capi:display (make-instance 'capi:interface)))
*INTERFACE*

CL-USER 3 >
(capi:prom
(capi:prompt-fo
(capi:prompt-for-fi
(capi:prompt-for-file "pick a file" :owne
(capi:prompt-for-file "pick a file" :owner *interf
(capi:prompt-for-file "pick a file" :owner *interface*)
NIL
NIL
NIL

CL-USER 4 >
(dribb
(dribble)
"""

A more complex example.  (Comments are added in afterward, and are not
part of the original session).

"""
CL-USER 6 >
(defun factorial (n)
  (labels ((fac (n acc)
             (if (<= n 0)

(defun factorial (n)
  (labels ((fac (n acc)
             (if (<= n 0) acc
               (fac (1- n)))))
    (fac ; oh wait, make acc optional, and the base case 1, and pass acc to fac
(defun factorial (n)
  (labels ((fac (n &optional (acc 1))
             (if (<= n 1) acc
               (fac (1- n) acc))))
    (fac n)))
FACTORIAL

CL-USER 7 > (factorial 10)
1 ; oops, forgot to multiply

CL-USER 8 > (factorial 10) ; Ctrl-C Ctrl-P for previous form
(defun factorial (n) ; and again to get the defun
  (labels ((fac (n &optional (acc 1))
             (if (<= n 1) acc
               (fac (1- n) acc))))
    (fac n)))
(defun factorial (n)
  (labels ((fac (n &optional (acc 1))
             (if (<= n 1) acc
               (fac (1- n) (* n acc))))) ; add in the multiplication
    (fac n)))
FACTORIAL

CL-USER 9 >
(defun factorial (n)
  (labels ((fac (n &optional (acc 1))
             (if (<= n 1) acc
               (fac (1- n) (* n acc)))))
    (fac n)))(factorial 10)
3628800

CL-USER 10 > (dribble)
"""

-- 
Joshua Taylor, http://www.cs.rpi.edu/~tayloj/


Re: LW DRIBBLE (& Tab Completion)


On Feb 25, 2010, at 10:18 AM, Joshua TAYLOR wrote:

> Anyone know if this is
> intended behavior or just a quirk?


So LWM dribble is actually a keylogger? Even more useful! This way when you have an "I thought I was wrong once, but it turns out I was mistaken" moment, you have a record of it.

warmest regards,

Ralph


Raffael Cavallaro
raffaelcavallaro@me.com






Updated at: 2020-12-10 08:39 UTC