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


    Date: Sun, 29 Mar 87 14:47:49 MST
    From: sandra%utah-orion@CS.UTAH.EDU (Sandra J Loosemore)

    CLtL specifies that *standard-input*, *standard-output*, and friends should
    initially be bound to synonym streams that pass everything on to *terminal-io*.
    In the very next paragraph (p329), however, it says that the value of
    *terminal-io* should never be changed.  What is the point of introducing the
    extra level of indirection?  Is there some reason why *standard-input*
    couldn't be initialized to the same stream as *terminal-io*?


It says that no USER program should ever change the value of
*terminal-io*.  *terminal-io* is not, however, a constant.  Programs
internal to the implementation might have need to set or bind it.
Actually, I can think of reasons why a user program would have need to
set *terminal-io*.  For instance, suppose you write a windowing package
in Lisp -- when changing windows you would generally set *terminal-io*
to the newly selected window, and all the synonym streams would follow
it over to the new window.

I interpreted that sentence about *terminal-io* as a warning to users
that if they are assigning to *terminal-io* they probably are doing the
wrong thing.  There's a similar warning in the description of EVAL.