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

Issue: DESCRIBE-INTERACTIVE (Version 2)



I added some discussion, changed some of the wording to reflect that 
this might be as a change rather than a clarification.

!
Issue:        DESCRIBE-INTERACTIVE
References:   DESCRIBE (p441)
Category:     CLARIFICATION/CHANGE
Edit history: 12-Sep-88, Version 1 by Pitman
		23-Sep-88, Version 2 by Masinter

Problem Description:

  CLtL is not clear about whether DESCRIBE may be interactive.
  While CLtL describes INSPECT as an interactive as an
  interactive version of DESCRIBE, it doesn't make explicit
  that DESCRIBE is non-interactive. In some implementations it is, 
  and in other implementations it is not.

  Users of systems in which DESCRIBE is not interactive may presume
  that it is safe to call DESCRIBE in a batch applications without
  hanging the application, which can lead to problems.

Proposal (DESCRIBE-INTERACTIVE:EXPLICITLY-VAGUE):

  Specify that DESCRIBE is permitted (though not required) to
  require user input, and that such input should be negotiated
  through *QUERY-IO*.

  Descriptive information would continue to go to *STANDARD-OUTPUT*.

Test Case:

  The following kind of interaction would be permissible in
  implementations which chose to do it:

   (DEFVAR *MY-TABLE* (MAKE-HASH-TABLE))
   (SETF (GETHASH 'FOO *MY-TABLE*) 1)
   (SETF (GETHASH 'BAR *MY-TABLE*) 2)
   (SETF (GETHASH 'FOOBAR *MY-TABLE*) 3)
   (DESCRIBE *MY-TABLE*)
   #<EQ-HASH-TABLE 259> has 3 entries.
   Do you want to see its contents? (Yes or No) Yes

Rationale:

  This validates current implementations.

Current Practice:

  Symbolics Genera asks some questions interactively when describing
  some kinds of structured data structures, such as hash tables.
  Since users can define their own DESCRIBE methods and took their cue
  from the system, describing some user structures also require such
  interactions.

Cost to Implementors:

  None.

Cost to Users:

  User code which depended on DESCRIBE running without user interaction
  would have to be modified. Such code is not currently fully portable,
  however.

Cost of Non-Adoption:

  Users would not know the straight story about whether they should
  expect interaction from DESCRIBE.

Benefits:

  Implementations which don't do interactive querying in DESCRIBE only
  because their not 100% sure it's kosher would be free to do it.

Aesthetics:

  Some people might think it's not aesthetic for DESCRIBE to require user
  intervention. Not saying whether it's permissible is probably less
  aesthetic, though.

Discussion:

  Pitman thinks it's important to clarify this issue, but he isn't fussy
  about the particulars.

  This proposal is the minimal proposal for compatibility with current
  behavior. 

  It might be possible to extend DESCRIBE to have additional 
  keywords (:VERBOSE, :INTERACTIVE-ALLOWED) to cover 
  additional behavior. 

  Some members of the cleanup committee think that this is really 
  a change from the intent of CLtL. However, the current sentiment
  is to be less rather than more specific about the behavior of debugging
  tools (25.3 of CLtL).