[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: Sandra J Loosemore <firstname.lastname@example.org>
- Subject: *terminal-io*
- From: Barry Margolin <barmar@Think.COM>
- Date: Mon, 30 Mar 87 14:52 EST
- Cc: email@example.com
- In-reply-to: <8703292147.AA00699@utah-orion.ARPA>
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.
- From: firstname.lastname@example.org (Sandra J Loosemore)