Results 11 -
16 of
16
The Essence of Multitasking
- Proceedings of the 11th International Conference on Algebraic Methodology and Software Technology, volume 4019 of Lecture Notes in Computer Science
, 2006
"... Abstract. This article demonstrates how a powerful and expressive abstraction from concurrency theory—monads of resumptions—plays a dual rôle as a programming tool for concurrent applications. The article demonstrates how a wide variety of typical OS behaviors may be specified in terms of resumption ..."
Abstract
-
Cited by 6 (3 self)
- Add to MetaCart
Abstract. This article demonstrates how a powerful and expressive abstraction from concurrency theory—monads of resumptions—plays a dual rôle as a programming tool for concurrent applications. The article demonstrates how a wide variety of typical OS behaviors may be specified in terms of resumption monads known heretofore exclusively in the literature of programming language semantics. We illustrate the expressiveness of the resumption monad with the construction of an exemplary multitasking kernel in the pure functional language Haskell. 1
Type-Checked Message-Passing Between Functional Processes
, 1994
"... This paper describes the use of constructor classes [Jones93] to improve the static type-checking model, with applications to Embedded Gofer [Wallace&Runciman94]. Keywords: ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
This paper describes the use of constructor classes [Jones93] to improve the static type-checking model, with applications to Embedded Gofer [Wallace&Runciman94]. Keywords:
Graphical application and visualization of lazy functional computation
, 1995
"... Mere academic toys or the tools of the future? Lazy functional programming languages have undoubted attractive properties. This thesis explores their potential, from the programmer's point of view, for implementing interactive and graphical applications to which they do not seem immediately suited. ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
Mere academic toys or the tools of the future? Lazy functional programming languages have undoubted attractive properties. This thesis explores their potential, from the programmer's point of view, for implementing interactive and graphical applications to which they do not seem immediately suited. The discussion is centred round two example applications. One is a graphical design program based on an idea of the artist M. C. Escher. The thesis argues that the graphical user interface may be encapsulated in an "interpret " function that when applied by a mouse click to an interface of appropriate type yields the required behaviour. The second example is a monitoring interpreter for a functional language. The idea is that if the mechanics of the reduction are presented at a suitable level of abstraction, this may be used to give insight into what is going on. On the basis of this the programmer might modify the code so that a program runs more efficiently in terms of speed and memory requirements. Problems of displaying the reduction are addressed, and solutions proposed for overcoming these: displaying the graph as a spanning tree, to ensure planarity, with extra leaves
Realtime Signal Processing Data ow, Visual, and Functional Programming
, 1995
"... This thesis presents and justi es a framework for programming real-time signal process-ing systems. The framework extends the existing \block-diagram " programming model� it has three components: a very high-level textual language, a visual language, and the data ow process network model of com ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
This thesis presents and justi es a framework for programming real-time signal process-ing systems. The framework extends the existing \block-diagram " programming model� it has three components: a very high-level textual language, a visual language, and the data ow process network model of computation. The data ow process network model, although widely-used, lacks a formal description, and I provide a semantics for it. The formal work leads into a new form of actor. Having established the semantics of data ow processes, the functional language Haskell is layered above this model, providing powerful features|notably polymorphism, higher-order func-tions, and algebraic program transformation|absent in block-diagram systems. A visual equivalent notation for Haskell, Visual Haskell, ensures that this power does not exclude the \intuitive " appeal of visual interfaces � with some intelligent layout and suggestive icons, a Visual Haskell program can be made to look very like ablock diagram program. Finally, the functional language is used to further extend data ow process networks, by simulating timed and dynamically-varying networks.
A Monad of Imperative Streams
, 1996
"... A new approach is presented for performing concurrent I/O in a functional programming language. A new monad St is introduced which generalizes Haskell's IO monad: A value of type St a represents an imperative program which, at certain times during its execution, will produce a value of type a. In c ..."
Abstract
- Add to MetaCart
A new approach is presented for performing concurrent I/O in a functional programming language. A new monad St is introduced which generalizes Haskell's IO monad: A value of type St a represents an imperative program which, at certain times during its execution, will produce a value of type a. In contrast, a value of type IO a represents an imperative program which, at the end of its execution, will produce a value of type a. Not only may values of type St a be used to represent imperative commands, they also serve to create so-called imperative streams. The computer's physical input devices are represented as primitive streams. Composite streams may be constructed and interleaved in a non-preemptive way using, for instance, the monad's bind operation. By way of a series of example programs, the usage of imperative streams is illustrated. Moreover, an implementation in terms of the IO monad is given that is suitable for executing the example programs on the Gofer interpreter. An exte...
An escape from the evil "I"
"... We present an extension to Haskell which supports reactive, concurrent programming with objects, sans the problematic blocking input. We give a semantics together with a number of programming examples, and show an implementation based on a preprocessor and a library implementing seven monadic consta ..."
Abstract
- Add to MetaCart
We present an extension to Haskell which supports reactive, concurrent programming with objects, sans the problematic blocking input. We give a semantics together with a number of programming examples, and show an implementation based on a preprocessor and a library implementing seven monadic constants.

