A theory for nondeterminism, parallelism, communication, and concurrency
Theoretical Computer Science
CML: A higher concurrent language
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Selected papers of the Second Workshop on Concurrency and compositionality
Non-determinism in functional languages
The Computer Journal - Special issue on formal methods: part 1
An overview of Manifold and its implementation
Concurrency: Practice and Experience
A natural semantics for lazy evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The lazy Lambda calculus in a concurrency scenario
Information and Computation
A call-by-need lambda calculus
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Nondeterministic extensions of untyped &lgr;-calculus
Information and Computation
On the operational semantics of nondeterminism and divergence
Theoretical Computer Science
From CML to its process algebra
Theoretical Computer Science
Let-floating: moving bindings to give faster programs
Proceedings of the first ACM SIGPLAN international conference on Functional programming
A theory of weak bisimulation for core CML
Proceedings of the first ACM SIGPLAN international conference on Functional programming
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
A non-deterministic call-by-need lambda calculus
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Improvement in a lazy context: an operational theory for call-by-need
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A transformation-based optimiser for Haskell
Science of Computer Programming - Special issue on the 6th European symposium on programming
Higher order operational techniques in semantics
Higher order operational techniques in semantics
Improvement theory and its applications
Higher order operational techniques in semantics
Reasoning about functions with effects
Higher order operational techniques in semantics
A Simple Language Supporting Angelic Nondeterminism and Parallel Composition
Proceedings of the 7th International Conference on Mathematical Foundations of Programming Semantics
Towards a Semantic Theory of CML (Extended Abstract)
MFCS '95 Proceedings of the 20th International Symposium on Mathematical Foundations of Computer Science
Computations, Residuals, and the POwer of Indeterminancy
ICALP '88 Proceedings of the 15th International Colloquium on Automata, Languages and Programming
Power Domains and Predicate Transformers: A Topological View
Proceedings of the 10th Colloquium on Automata, Languages and Programming
Comparing Two Fully Abstract Dataflow Models
PARLE '89 Proceedings of the Parallel Architectures and Languages Europe, Volume II: Parallel Languages
A Relational Model of Non-deterministic Dataflow
CONCUR '98 Proceedings of the 9th International Conference on Concurrency Theory
On the Semantics of Fair Parallelism
Proceedings of the Abstract Software Specifications, 1979 Copenhagen Winter School
Must Preorder in Non-Deterministic Untyped Lambda-Calculus
CAAP '92 Proceedings of the 17th Colloquium on Trees in Algebra and Programming
Nondeterministic call by need is neither lazy nor by name
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
McCarthy''s Amb Cannot Implement Fair Merge
McCarthy''s Amb Cannot Implement Fair Merge
Deriving a lazy abstract machine
Journal of Functional Programming
The call-by-need lambda calculus
Journal of Functional Programming
A foundation for actor computation
Journal of Functional Programming
Closures of may-, should- and must-convergences for contextual equivalence
Information Processing Letters
Similarity implies equivalence in a class of non-deterministic call-by-need lambda calculi
Information and Computation
Correctness of copy in calculi with letrec
RTA'07 Proceedings of the 18th international conference on Term rewriting and applications
Information Processing Letters
Hi-index | 0.00 |
The powerful abstraction mechanisms of functional programming languages provide the means to develop domain-specific programming languages within the language itself. Typically, this is realised by designing a set of combinators (higher-order reusable programs) for an application area, and by constructing individual applications by combining and coordinating individual combinators. This paper is concerned with a successful example of such an embedded programming language, namely Fudgets, a library of combinators for building graphical user interfaces in the lazy functional language Haskell. The Fudget library has been used to build a number of substantial applications, including a web browser and a proof editor interface to a proof checker for constructive type theory. This paper develops a semantic theory for the non-deterministic stream processors that are at the heart of the Fudget concept. The interaction of two features of stream processors makes the development of such a semantic theory problematic: (i) the sharing of computation provided by the lazy evaluation mechanism of the underlying host language, and (ii) the addition of non-deterministic choice needed to handle the natural concurrency that reactive applications entail We demonstrate that this combination of features in a higher-order functional language can be tamed to provide a tractable semantic theory and induction principles suitable for reasoning about contextual equivalence of Fudgets.