Issue: STEP-MINIMALForum: Editorial
References: STEP (p441)
Category: CLARIFICATION
Edit history: 04-Mar-91, Version 1 by Pitman
Status: For X3J13 consideration
Problem Description:
What is the minimal interpretation of STEP? Specifically, must it
pause for some user interaction, or can it just proceed without
pausing in implementations (probably `compiled-only' implementations)
which do not choose to implement this feature?
In particular, are either of the following implementations valid?
(DEFMACRO STEP (FORM) `(PROGN ,FORM))
or
`(LET ((VALUES (MULTIPLE-VALUE-LIST ,FORM)))
(FORMAT T "~&~S => ~{~S~^, ~}~%" ',FORM VALUES)
(VALUES-LIST VALUES)))
Proposal (STEP-MINIMAL:PERMIT-PROGN):
Clarify that it is permissible to implement (STEP x) as (PROGN x)
in implementations which do not wish to provide more elaborate
functionality.
Rationale:
For a delivery Lisp, this would be a minimal amount of work.
Proposal (STEP-MINIMAL:REQUIRE-PAUSE):
Clarify that (STEP x) must, at minimum, pause in some way that permits
user intervention.
This also implies that in implementaions which do have a query loop,
some form of query must occur even for constant forms, like (STEP 5).
Rationale:
Users who introduce STEP into a program might do so on the assumption
that execution will not proceed beyond that point (e.g., into some
dangerous code that follows) without offering them a way to intervene
first.
Current Practice:
Symbolics Genera requires intervention.
Symbolics Cloe Runtime (the part that runs on the 386) behaves like PROGN
in the example I tried (a couple of nested arithmetic operations).
Cost to Implementors:
REQUIRE-PAUSE: Probably none. If there are any minimalist
implementations which do not currently require a pause now, they
would need a very small amount of additional code.
PERMIT-PROGN: None.
Cost to Users:
None. This is a debugging feature that affects -how- Lisp is used in
subtle ways, but is not likely to be present in stable code so wouldn't
have a direct cost. It might be argued that there was a slight cost
to PERMIT-PROGN for users who wanted the pause and didn't get it in
some implementation; there is also a risk of larger cost with
PERMIT-PROGN of users who expect a pause and don't get it and fall
through to code they didn't intend to run.
Cost of Non-Adoption:
Unclear specification. Implementors of certain implementations won't
know what to do. Users won't know what to expect.
Benefits:
See above.
Aesthetics:
Probably negligible.
Discussion:
Pitman has a slight preference for REQUIRE-PAUSE, but supports any
interpretation that makes this clear.