Introduction

Today's available graphical toolkits for applicative languages are not satisfactory. Most of the time, they ask to the user to be an X expert which must cope with complicated arcane details such as server connections or queue events. This is a true problem, since people which use this kind of languages are generally not inclined in system programming and little of them get over the gap between the language and the toolkit abstraction levels.

Tk is a powerful X11 graphical toolkit defined at the University of Berkeley by J.Ousterhout [#!Ouster-Tk!#]. This toolkit gives to the user high level widgets such as buttons or menu and is easily programmable. In particular, a little knowledge of X fundamentals are needed to build an application with it. Tk package rely on an interpretative language named Tcl [#!Ouster-Tcl!#]. However, dependencies between those two packages are not too intricate and replacing Tcl by an applicative language was an exciting challenge. To keep intact the Tk/Tcl pair spirit, a little applicative language was necessary. Scheme [#!SICP!#] was a good candidate to replace Tcl, because it is small, clean and well defined since it is an IEEE standard [#!IEEE-Scheme!#].

Programming with STK can be done at two distinct levels. First level is quite identical than programming Tk with Tcl, excepting several minor syntactic differences. Second level of programming uses a full object oriented system (with multi-inheritance, generic functions and a true meta object protocol). Those two levels of programming are briefly described in the two first sections. Section 4 is devoted to implementation and section 5 exposes some encountered problems when mixing Tk and Scheme.