Porting the Clean Object I/O library to Haskell

  • Peter Achten ,
  • Simon Peyton Jones

Proceedings of the 12th International workshop on the Implementation of Functional Languages, Aachen (IFL'00), selected papers |

Published by Springer

Pure, functional programming languages offer several solutions to construct Graphical User Interfaces. One of these approaches is the Clean Object I/O library. It employs an explicit environment passing scheme, based on the uniqueness type system of Clean. Graphical User Interface elements are defined on a high level of abstraction by means of algebraic data types. Composite elements are constructed by means of type constructor combinators. The behaviour of an interactive element is defined by higher order functions. These functions can use global and local state. The Object I/O system supports interleaved interactive processes. Interactive elements can communicate internally by means of message passing. Solutions for Graphical User Interfaces for the programming language Haskell are based on monads, using an implicit environment passing scheme. In this paper we investigate how the Clean Object I/O library can be ported to Haskell. We give an implementation of a small fragment of the Object I/O library to show the feasibility. We take especial consideration for the relevant design choices.