Results 1 - 10
of
11
FUDGETS - A Graphical User Interface in a Lazy Functional Language
, 1993
"... This paper describes an implementation of a small windowbased graphical user interface toolkit for X Windows written in the lazy functional language LML. By using this toolkit, a Haskell or LML programmer can create a user interface with menus, buttons and other graphical interface objects, without ..."
Abstract
-
Cited by 77 (4 self)
- Add to MetaCart
This paper describes an implementation of a small windowbased graphical user interface toolkit for X Windows written in the lazy functional language LML. By using this toolkit, a Haskell or LML programmer can create a user interface with menus, buttons and other graphical interface objects, without conforming to more or less imperative programming paradigms imposed if she were to use a traditional (imperative) toolkit. Instead, the power of the abstraction methods provided by Haskell or LML are used. The main abstraction we use is the fudget. Fudgets are combined in a hierarchical structure, and they interact by message passing. The current implementation is based on a sequential evaluator, but by using non-determinism and oracles, we suggest how the fudgets can evaluate in parallel. We believe that the toolkit can be extended to a full-feathered and practically useful high level graphical toolkit. 1 Introduction Not so long ago, the dominating way for a user to interact with a compu...
Programming With Broadcasts
- In CONCUR
, 1993
"... . [Pra91, Pra92] develop CBS, a CCS-like calculus [Mil89] where processes communicate by broadcasting values along a single channel. These values are hidden or restricted by translation to noise. This paper types CBS and restricts it to processes with a unique response to each input. Nondeterminism ..."
Abstract
-
Cited by 20 (7 self)
- Add to MetaCart
. [Pra91, Pra92] develop CBS, a CCS-like calculus [Mil89] where processes communicate by broadcasting values along a single channel. These values are hidden or restricted by translation to noise. This paper types CBS and restricts it to processes with a unique response to each input. Nondeterminism arises only if two processes in parallel both wish to transmit. These restrictions do not reduce the programming power of CBS. But strong and weak bisimulation can now be defined exactly as in CCS, yet capture observationally meaningful relations. Weak bisimulation is a congruence. This paper also shows how to program in CBS in a (lazy) ML framework. A simple CBS simulator is given, and a parallel implementation discussed. The simulator represents data evaluation, recursion and conditionals directly in Lazy ML. It implements an extended CBS with evaluation as well as communication transitions. [Pra91, Pra92] develop a CCS-like [Mil89] calculus of broadcasting systems, CBS. This paper continu...
Linearity and Laziness
- In Proc. 5-th ACM Conference on Functional Programming Languages and Computer
, 1990
"... A criticism often levelled at functional languages is that they do not cope elegantly or efficiently with problems involving changes of state. In a recent paper [26], Wadler has proposed a new approach to these problems. His proposal involves the use of a type system based on the linear logic of Gir ..."
Abstract
-
Cited by 17 (1 self)
- Add to MetaCart
A criticism often levelled at functional languages is that they do not cope elegantly or efficiently with problems involving changes of state. In a recent paper [26], Wadler has proposed a new approach to these problems. His proposal involves the use of a type system based on the linear logic of Girard [7]. This allows the programmer to specify the "natural" imperative operations without at the same time sacrificing the crucial property of referential transparency. In this paper we investigate the practicality of Wadler's approach, describing the design and implementation of a variant of Lazy ML [2]. A small example program shows how imperative operations can be used in a referentially transparent way, and at the same time it highlights some of the problems with the approach. Our implementation is based on a variant of the G-machine [15, 1]. We give some benchmark figures to compare the performance of our machine with the original one. The results are disappointing: the cost of maintai...
A Calculus Of Value Broadcasts
- IN PARLE'93
, 1993
"... Computation can be modelled as a sequence of values, each broadcast by one agent and instantaneously audible to all those in parallel with it. Listening agents receive the value; others lose it. Subsystems interface via translators; these can scramble values and thus hide or restrict them. Examples ..."
Abstract
-
Cited by 16 (5 self)
- Add to MetaCart
Computation can be modelled as a sequence of values, each broadcast by one agent and instantaneously audible to all those in parallel with it. Listening agents receive the value; others lose it. Subsystems interface via translators; these can scramble values and thus hide or restrict them. Examples show the calculus describing this model to be a powerful and natural programming tool. Weak bisimulation, a candidate for observational equivalence, is defined on the basis that receiving a value can be matched by losing it.
Broadcasting With Priority
- IN ESOP
, 1994
"... Adding priorities to CCS is difficult, and involves two-stage operational semantics or other complications. By contrast, priorities can be added very simply to a calculus of broadcasting systems (CBS). The reason is the input /output distinction made in CBS, with output actions being autonomous. Pri ..."
Abstract
-
Cited by 8 (6 self)
- Add to MetaCart
Adding priorities to CCS is difficult, and involves two-stage operational semantics or other complications. By contrast, priorities can be added very simply to a calculus of broadcasting systems (CBS). The reason is the input /output distinction made in CBS, with output actions being autonomous. Priority makes sense only for autonomous actions. As in unprioritised CBS, both strong and weak bisimulation are congruences, and capture the intuitively desired equivalences. CBS is also a powerful and natural language, offering an interesting new programming paradigm. Several examples show that priorities extend both the power and the paradigm.
I+: A Multiparadigm Language for Object-Oriented Declarative Programming
- Computer Languages
, 1995
"... This paper presents a multiparadigm language I + which is an integration of the three major programming paradigms: object-oriented, logic and functional. I + has an object-oriented framework in which the notions of classes, objects, methods, inheritance and message passing are supported. Methods m ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
This paper presents a multiparadigm language I + which is an integration of the three major programming paradigms: object-oriented, logic and functional. I + has an object-oriented framework in which the notions of classes, objects, methods, inheritance and message passing are supported. Methods may be specified as clauses or functions, thus the two declarative paradigms are incorporated at the method level of the object-oriented paradigm. In addition, two levels of parallelism may be exploited in I + programming. Therefore I + is a multiparadigm language for object-oriented declarative programming as well as parallel programming. Keywords: Multiparadigm, Object-oriented paradigm , Logic paradigm , Functional paradigm 1 Introduction A multiparadigm language is a language that supports more than one programming paradigm. Multiparadigm languages are desirable for the following reasons: . A programmer can choose the most appropriate paradigm for a particular problem at hand so that...
A proof of Higman's lemma by structural induction
, 1993
"... This paper gives an example of such an inductive proof for a combinatorial problem. While there exist other constructive proofs of Higman's lemma (see for instance [10, 14]), the present argument has been recorded for its extreme formal simplicity. This simplicity allows us to give a complete descri ..."
Abstract
-
Cited by 8 (1 self)
- Add to MetaCart
This paper gives an example of such an inductive proof for a combinatorial problem. While there exist other constructive proofs of Higman's lemma (see for instance [10, 14]), the present argument has been recorded for its extreme formal simplicity. This simplicity allows us to give a complete description of the computational content of the proof, first in term of a functional program, which follows closely the structure of the proof, and then in term of a program with state. The second program has an intuitive algorithmic meaning. In order to show that these two programs are equivalent, we introduce an intermediary program, which is a first-order operational interpretation of the functional program. The relation between this program and the program with state is simple to establish. We can thus claim that we understand completely the computational behaviour of the proof. It is possible to give still another description of this algorithm, in term of process computing in parallel. In this form, the connection with Nash-Williams non constructive argument is quite clear (though this algorithm was found first only as an alternative description of the computational content of the inductive proof). This inductive proof was actually found from the usual non constructive argument by using the technique described in [3]. These two facts give strong indication that this algorithm can be considered as the computational content of the Nash-Williams argument.
From VDM Specifications to Functional Prototypes
, 1993
"... This paper describes, mostly in an informal way, a method for translating formal, model-based specifications, into functional prototypes. Such prototypes can be used to validate software system specifications in the very early stages of the design process. We show how to translate the executable sub ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
This paper describes, mostly in an informal way, a method for translating formal, model-based specifications, into functional prototypes. Such prototypes can be used to validate software system specifications in the very early stages of the design process. We show how to translate the executable subset of the VDM language into Lazy ML, establishing the translation schemes and requirements needed for an automated translation process. Here we are not concerned with implicit specifications, but indicate, in places, what has to be done in order for such specifications to be automatically translated into a functional program. A small example is presented and, being itself part of a translation system from VDM to LML, gives the reader a good idea of the power of the approach. Keywords: Formal Methods, Formal Specification, Rapid Prototyping, Software Validation, Animation Techniques, Functional Languages. 2 Introduction This article is concerned with the animation of model-based formal spe...

