• Documents
  • Authors
  • Tables
  • Other Seers ▼
    RefSeer AckSeer CollabSeer SeerSeer
  • Log in
  • Sign up
  • MetaCart

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

Gadgets: Lazy Functional Components for Graphical User Interfaces (1995)

by Rob Noble, Colin Runciman
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 17
Next 10 →

A principled approach to operating system construction in Haskell

by Thomas Hallgren, Mark P Jones, Rebekah Leslie, Andrew Tolmach - In ICFP ’05: Proceedings of the Tenth ACM SIGPLAN International Conference on Functional Programming , 2005
"... We describe a monadic interface to low-level hardware features that is a suitable basis for building operating systems in Haskell. The interface includes primitives for controlling memory management hardware, user-mode process execution, and low-level device I/O. The interface enforces memory safety ..."
Abstract - Cited by 34 (2 self) - Add to MetaCart
We describe a monadic interface to low-level hardware features that is a suitable basis for building operating systems in Haskell. The interface includes primitives for controlling memory management hardware, user-mode process execution, and low-level device I/O. The interface enforces memory safety in nearly all circumstances. Its behavior is specified in part by formal assertions written in a programming logic called P-Logic. The interface has been implemented on bare IA32 hardware using the Glasgow Haskell Compiler (GHC) runtime system. We show how a variety of simple O/S kernels can be constructed on top of the interface, including a simple separation kernel and a demonstration system in which the kernel, window system, and all device drivers are written in Haskell.

Interactive Functional Objects in Clean

by Peter Achten, Rinus Plasmeijer , 1997
"... . The functional programming language Clean has a high level I/O system (version 0.8) in which complex yet efficient interactive programs can be created. In this paper we present its successor (version 1.0), the object I/O system. We consider some of the design considerations that have influence ..."
Abstract - Cited by 21 (13 self) - Add to MetaCart
. The functional programming language Clean has a high level I/O system (version 0.8) in which complex yet efficient interactive programs can be created. In this paper we present its successor (version 1.0), the object I/O system. We consider some of the design considerations that have influenced the design of the new I/O system greatly. Key issues are compositionality, orthogonality, and extensibility. Apart from design, the object I/O system improves on its predecessor by two major contributions: programmers can introduce polymorphic local state at every (collection of) user interface component(s) and programmers can create interactive processes in a flexible way. All interface components can communicate with each other by sharing state but also using powerful message passing primitives in both synchronous, asynchronous, and uni- or bi-directional way. Using the message passing mechanism remote procedure calling can be added easily. The result is an object oriented I/O...

Porting the Clean Object I/O Library to Haskell

by Peter Achten, Simon Peyton Jones , 2000
"... . Pure, functional programming languages oer several solutions to construct Graphical User Interfaces (GUIs). In this paper we report on a project in which we port the Clean Object I/O library to Haskell. The Clean Object I/O library uses an explicit environment passing scheme, based on the uniq ..."
Abstract - Cited by 21 (9 self) - Add to MetaCart
. Pure, functional programming languages oer several solutions to construct Graphical User Interfaces (GUIs). In this paper we report on a project in which we port the Clean Object I/O library to Haskell. The Clean Object I/O library uses an explicit environment passing scheme, based on the uniqueness type system of Clean. It supports many standard GUI features such as windows, dialogues, controls, and menus. Applications can have timing behaviour. In addition, there is support for interactive processes and message passing. The standard functional programming language Haskell uses a monadic framework for I/O. We discuss how the Object I/O library can be put in a monadic framework without loosing its essential features. We give an implementation of an essential fragment of the Object I/O library to demonstrate the feasibility. We take especial consideration for the relevant design choices. One particular design choice, how to handle state, results in two versions. 1 Intro...

The Design of a Functional GUI Library Using Constructor Classes

by Ton Vullinghs, Wolfram Schulte, Thilo Schwinn - In Perspectives of System Informatics, LNCS 1181 , 1996
"... . We present the design rationale of a constructor class-based implementation of a graphical user interface library. This library, named TkGofer, provides a convenient way to write window-oriented applications in the pure, functional programming language Gofer, using the user interface toolkit Tcl/T ..."
Abstract - Cited by 12 (2 self) - Add to MetaCart
. We present the design rationale of a constructor class-based implementation of a graphical user interface library. This library, named TkGofer, provides a convenient way to write window-oriented applications in the pure, functional programming language Gofer, using the user interface toolkit Tcl/Tk. The principal contribution of the approach embodied in the library is its flexibility and its type security to specify the appearance and behaviour of individual widgets and their composition. 1 Introduction Functional programming languages offer many advantages to programmers. Using functional languages often results in faster development times and shorter code compared with imperative languages. Furthermore, reasoning about and reusing programs is easier. Recent research in the field of functional programming resulted in new concepts such as monads to tame the imperative aspects of IO and state [12], and constructor classes to deal with higher order polymorphism [7]. Today, the specific...

Single Assignment C - Entwurf und Implementierung einer C-Variante mit spezieller Unterstützung shape-invarianter Array-Operationen

by Sven-Bodo Scholz , 1996
"... ..."
Abstract - Cited by 11 (8 self) - Add to MetaCart
Abstract not found

The implementation of interactive local state transition systems in Clean

by Peter Achten, Rinus Plasmeijer - Proceedings 11th International Workshop Implementation of Functional Languages, IFL'99 , 1999
"... . The functional programming language Clean offers an extensive library, the object I/O library, to programmers to create interactive applications that use Graphical User Interfaces (GUI). Programs are constructed by composition of interactive objects. Interactive objects share state. To support ..."
Abstract - Cited by 5 (2 self) - Add to MetaCart
. The functional programming language Clean offers an extensive library, the object I/O library, to programmers to create interactive applications that use Graphical User Interfaces (GUI). Programs are constructed by composition of interactive objects. Interactive objects share state. To support modular programming it is also possible to provide objects with local state. Hierarchies of stateful objects are defined by means of algebraic specifications. Good use is made of the fact that Clean is a strongly typed language. In this paper we show how the evaluation of interactive objects is implemented in the object I/O library. The evaluation can be handled elegantly using lazy evaluation. 1 Introduction For many years the functional programming language Clean [7, 13, 14] enables programmers to create efficient, interactive applications that use Graphical User Interfaces (GUIs). This is done by means of an extensive library that has been developed in Clean. The first publicly av...

Composing the user interface with Haggis

by Sigbjorn Finne, Simon Peyton Jones - Advanced Functional Programming: Second Interational School, LNCS #1129 , 1996
"... This tutorial presents Haggis, a graphical user interface framework written in the lazy functional language Haskell. The Haggis framework provides the programmer with a compositional view of graphical user interfaces, where complete GUI applications can be built by repeatedly composing together part ..."
Abstract - Cited by 5 (0 self) - Add to MetaCart
This tutorial presents Haggis, a graphical user interface framework written in the lazy functional language Haskell. The Haggis framework provides the programmer with a compositional view of graphical user interfaces, where complete GUI applications can be built by repeatedly composing together parts. The individual user interface components are treated as virtual I/O devices that can be interacted with by the application just files and other `normal' devices. A key ingredient of Haggis is the use of concurrency to provide its compositional view of GUIs. 1 Introduction An important and interesting application area is graphical user interface applications. Haggis[6] is one Haskell[5] framework for composing such GUI applications within a functional language. Apart from being anchored in a lazy functional language, some of the important features of Haggis are: ffl A graphical user interface is treated as a virtual I/O device. A very common way of structuring a graphical user interface p...

Using Concurrent Haskell to Develop User Interfaces over an Active Repository

by Einar W. Karlsen, Stefan Westmeier - In IFL'97, Implementation of Functional Languages 97 , 1997
"... . Views to the underlying repository of software objects within a Software Development Environment are, by nature, very dynamic. While one user is viewing a version graph, another user may change it by creating or pruning versions. Within the Universal Formal Methods WorkBench (UniForM), which us ..."
Abstract - Cited by 3 (0 self) - Add to MetaCart
. Views to the underlying repository of software objects within a Software Development Environment are, by nature, very dynamic. While one user is viewing a version graph, another user may change it by creating or pruning versions. Within the Universal Formal Methods WorkBench (UniForM), which uses Haskell as its central integration language, we have solved the problem by representing all kind of events as first class composable event values in the style of CML. Such events amount to user interactions from the user interaction manager, change notifications from the active repository, individual tool events or internal channel events. Agents, called interactors, can then be set up to maintain consistency between a view and its underlying repository by coordinating database change notifications and user interactions. 1 Introduction The UniForM WorkBench [KPO+96] is a an integration framework currently under development for setting up integrated Software Development Environmen...

Embracing Windows

by Colin J. Taylor , 1996
"... There are a number of systems that advocate the use of lazy functional languages for the programming of graphical user interfaces (GUIs) such as Haggis, Gadgets, and Fudgets. These systems have addressed similar issues, such as how to handle I/O in a purely functional language, and how to provide a ..."
Abstract - Cited by 3 (0 self) - Add to MetaCart
There are a number of systems that advocate the use of lazy functional languages for the programming of graphical user interfaces (GUIs) such as Haggis, Gadgets, and Fudgets. These systems have addressed similar issues, such as how to handle I/O in a purely functional language, and how to provide a structured interface to the event driven model of windowing systems. In this report we present a framework that encapsulates such common elements and is intended to aid in the formal study of the relationships between these systems. The framework is called Embracing Windows, partly because it embraces the window paradigm, and partly because it uses the Hugs functional programming system. Two high-level GUI development systems have been built on the framework, and are based upon Haggis and Fudgets, respectively. The essence of these systems is distilled and a brief comparison made. The complete Haskell source code for the Embracing Windows framework is presented as an appendix. The framework ...

A Trace Browser for a Lazy Functional Language

by Richard Watson, Eric Salzman - In Proceedings of the Twentieth Australian Computer Science Conference , 1997
"... This paper describes how to construct a tool that enables a programmer to view the evaluation behaviour of a lazy functional program. In the system presented, the program is first transformed so that on execution it produces a trace of expression evaluation, and this trace is passed to a browser whi ..."
Abstract - Cited by 2 (0 self) - Add to MetaCart
This paper describes how to construct a tool that enables a programmer to view the evaluation behaviour of a lazy functional program. In the system presented, the program is first transformed so that on execution it produces a trace of expression evaluation, and this trace is passed to a browser which provides facilities for the user to navigate over the trace. We concentrate on issues around browser design, namely the identification of suitable functionality for effective navigation, and a suitable architecture for its construction. A prototype browser is presented. Keywords Lazy functional languages, debugging. 1 Introduction Over the last decade or so lazy functional languages have become increasingly popular [7, 9], with modern languages such as Miranda 1 [25] and Haskell [8] being adopted as vehicles for teaching programming and formal reasoning techniques to computer science students [23]. Despite their growing popularity, programmers can find lazy functional languages challe...
The National Science Foundation
  • About CiteSeerX
  • Submit Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2010 The Pennsylvania State University