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


    Date: Mon, 8 Feb 88 13:41 EST
    From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>

    Kent, I agree with your comments, however you did not address yourself
    to the issue that Unix requires *STANDARD-OUTPUT* and *ERROR-OUTPUT* to
    go to different output destinations, while Common Lisp requires
    *STANDARD-OUTPUT* and *ERROR-OUTPUT* to be initially bound to synonyms
    for the same stream.

Ah, somehow I missed this issue. It should have been in the problem description, not 
in the test case/example section.

    I don't know precisely what the "correct fix" to Common Lisp is here, but
    I don't think it involves either making all the stream variables' bindings
    initially undefined, nor leaving all but *TERMINAL-IO* defined to be
    synonym streams to *TERMINAL-IO*.  Maybe the variables should be defined
    in terms of their contracts rather than their implementations.

Sounds like a plausible avenue to pursue.

    I think the proposal needs another iteration based on a new idea.

Agreed. I'm certainly willing to continue entertaining discussion on the issue.

If it helps the Unix guys putting together the next round of proposals,
I'm willing to have relax the requirement that *ERROR-OUTPUT* be bound
to a synonym stream to *TERMINAL-IO*. It's mainly the -IO* variables and
*STANDARD-INPUT* and *STANDARD-OUTPUT* that I'm concerned about having
point to *TERMINAL-IO* initially. *ERROR-OUTPUT* and *TRACE-OUTPUT* are
less important to me as long as the issues are clearly documented.

In fact, though, I think that many supposedly portable programs are -extremely-
sloppy about distinguishing *ERROR-OUTPUT* and *TERMINAL-IO* and that lots of
dumb problems like
 (FORMAT *ERROR-OUTPUT* "You did something bad: ...")
 (YES-OR-NO-P "Continue anyway? ")
will be shown up if *ERROR-OUTPUT* and *TERMINAL-IO* do not initially point to
the same stream. Maybe it's just as well that such bugs do get shown up, but I
think there should be a guide to what kinds of things belong on *ERROR-OUTPUT*
and what belongs on *QUERY-IO* and what on *TERMINAL-IO* and what on
*STANDARD-OUTPUT*. We're still way too vague about all this. Any proposal to
fix things must be more specific, not more vague, since systems cannot 
come up with "creative" solutions to the Unix problem in the absence of
cooperation from the users.