LUSTRE: a declarative language for real-time programming
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Elements of generalized ultrametric domain theory
Theoretical Computer Science
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Functional reactive programming from first principles
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Functional reactive programming, continued
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
A Mixed Linear and Non-Linear Logic: Proofs, Terms and Models (Extended Abstract)
CSL '94 Selected Papers from the 8th International Workshop on Computer Science Logic
An Extension of Models of Axiomatic Domain Theory to Models of Synthetic Domain Theory
CSL '96 Selected Papers from the10th International Workshop on Computer Science Logic
Towards a Uniform Topological Treatment of Streams and Functions on Streams
Proceedings of the 12th Colloquium on Automata, Languages and Programming
Linear Logic, Monads and the Lambda Calculus
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
LICS '00 Proceedings of the 15th Annual IEEE Symposium on Logic in Computer Science
Denotational semantics of concurrency
STOC '82 Proceedings of the fourteenth annual ACM symposium on Theory of computing
Integrating dataflow evaluation into a practical higher-order call-by-value language
Integrating dataflow evaluation into a practical higher-order call-by-value language
Safe functional reactive programming through dependent types
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Causal commutative arrows and their optimization
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Enriching an effect calculus with linear types
CSL'09/EACSL'09 Proceedings of the 23rd CSL international conference and 18th EACSL Annual conference on Computer science logic
Ultrametric Semantics of Reactive Programs
LICS '11 Proceedings of the 2011 IEEE 26th Annual Symposium on Logic in Computer Science
First Steps in Synthetic Guarded Domain Theory: Step-Indexing in the Topos of Trees
LICS '11 Proceedings of the 2011 IEEE 26th Annual Symposium on Logic in Computer Science
Embedding dynamic dataflow in a call-by-value language
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Higher-order functional reactive programming in bounded space
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Semantics for graphical user interfaces
TLDI '12 Proceedings of the 8th ACM SIGPLAN workshop on Types in language design and implementation
Pure type systems with corecursion on streams: from finite to infinitary normalisation
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Fixing idioms: a recursion primitive for applicative DSLs
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
Causality for free!: parametricity implies causality for functional reactive programs
PLPV '13 Proceedings of the 7th workshop on Programming languages meets program verification
Higher-order functional reactive programming without spacetime leaks
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Productive coprogramming with guarded recursion
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
We give a denotational model for graphical user interface (GUI) programming using the Cartesian closed category of ultrametric spaces. The ultrametric structure enforces causality restrictions on reactive systems and allows well-founded recursive definitions by a generalization of guardedness. We capture the arbitrariness of user input (e.g., a user gets to decide the stream of clicks she sends to a program) by making use of the fact that the closed subsets of an ultrametric space themselves form an ultrametric space, allowing us to interpret nondeterminism with a "powerspace" monad. Algebras for the powerspace monad yield a model of intuitionistic linear logic, which we exploit in the definition of a mixed linear/non-linear domain-specific language for writing GUI programs. The non-linear part of the language is used for writing reactive stream-processing functions whilst the linear sublanguage naturally captures the generativity and usage constraints on the various linear objects in GUIs, such as the elements of a DOM or scene graph. We have implemented this DSL as an extension to OCaml, and give examples demonstrating that programs in this style can be short and readable.