Lightweight GUIs for Functional Programming

Graphical user interfaces (GUIs) are hard to combine with functional programming. Using a suitable combination of monads, we are able to tame the imperative aspects of graphical I/O in a straightforward and elegant way. We present a concept to integrate lightweight GUIs into the functional framework, together with a library of basic functions and layout combinators to manipulate the GUI. An implementation of this library, using a set of high-level graphical I/O routines, is outlined. Examples demonstrate the simple way in which applications can be written.

[1]  Colin Runciman,et al.  Functional Languages and Graphical User Interfaces -- a review and a case study , 1994 .

[2]  李幼升,et al.  Ph , 1989 .

[3]  James Gettys,et al.  The X window system , 1986, TOGS.

[4]  Philip Wadler,et al.  Comprehending monads , 1990, LISP and Functional Programming.

[5]  WadlerPhilip,et al.  Report on the programming language Haskell , 1992 .

[6]  Satnam Singh,et al.  Implementing Fudgets with Standard Widget Sets , 1993, Functional Programming.

[7]  Philip Wadler,et al.  Comprehending monads , 1990, Mathematical Structures in Computer Science.

[8]  M. Barr,et al.  Toposes, Triples and Theories , 1984 .

[9]  Satnam Singh Using XView/X11 from Miranda , 1991, Functional Programming.

[10]  Mats Carlsson,et al.  FUDGETS: a graphical user interface in a lazy functional language , 1993, FPCA '93.

[11]  Marinus J. Plasmeijer,et al.  High Level Specification of I/O in Functional Languages , 1992, Functional Programming.

[12]  Duncan C. Sinclair Graphical User Interfaces for Haskell , 1992, Functional Programming.

[13]  John K. Ousterhout,et al.  Tcl and the Tk Toolkit , 1994 .

[14]  Eugenio Moggi,et al.  Computational lambda-calculus and monads , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[15]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

[16]  Philip Wadler,et al.  Monads and composable continuations , 1994, LISP Symb. Comput..

[17]  Uday S. Reddy,et al.  Imperative functional programming , 1996, CSUR.

[18]  Philip Wadler,et al.  The essence of functional programming , 1992, POPL '92.

[19]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[20]  Simon L. Peyton Jones,et al.  Lazy functional state threads , 1994, PLDI '94.