[HARLEQUIN][Common Lisp HyperSpec (TM)] [Previous][Up][Next]


Issue STEP-MINIMAL Writeup

Issue:        STEP-MINIMAL

Forum: 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

(DEFMACRO STEP (FORM)

`(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.


[Starting Points][Contents][Index][Symbols][Glossary][Issues]
Copyright 1996, The Harlequin Group Limited. All Rights Reserved.