#Letter# #solution to the pprint/gray-streams problem# #usercode.lisp# ## ## #gray-streams.lisp# ## ## #streamfunctions# ## ## #Stream.java# ## ## #methods for stream-write-char etc., as allowed by Gray streams# ## ## #slots in Stream structure-object# ## ## #pprint.lisp# ## ## #system stream slots# ## ## #write-char# #old-write-char# #stream-write-char# #binary-output# #binary-output# #binary-output# #binary-output# #write-char# #binary-output# #primitives move to here from Stream.java# #gray-streams either calls a method or a saved streamfunction# #slots allow for dispatching# #pprint creates wrapped streams, and sets slots to contain closures that extract the underlying stream and invoke Stream.java# #system slots invoke Stream.java# #Stream.java contains functions that are overridden in extending Java classes, as before#