Type theory and functional programming
Type theory and functional programming
The ESTEREL synchronous programming language: design, semantics, implementation
Science of Computer Programming
Proceedings of the first ACM SIGPLAN international conference on Functional programming
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Science of Computer Programming - Special issue on mathematics of program construction
Functional reactive programming from first principles
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Types and programming languages
Types and programming languages
Synchronous Programming of Reactive Systems
Synchronous Programming of Reactive Systems
Functional reactive programming, continued
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Synchronous Programming of Reactive Systems
CAV '98 Proceedings of the 10th International Conference on Computer Aided Verification
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
Haskell '03 Proceedings of the 2003 ACM SIGPLAN workshop on Haskell
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Towards a higher-order synchronous data-flow language
Proceedings of the 4th ACM international conference on Embedded software
Flask: staged functional programming for sensor networks
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Switched-On Yampa: declarative programming of modular synthesizers
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
Embedding dynamic dataflow in a call-by-value language
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Mathematical equations as executable models of mechanical systems
Proceedings of the 1st ACM/IEEE International Conference on Cyber-Physical Systems
A semantic model for graphical user interfaces
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Keeping calm in the face of change
Higher-Order and Symbolic Computation
Higher-order functional reactive programming in bounded space
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PLPV '12 Proceedings of the sixth workshop on Programming languages meets program verification
Causality for free!: parametricity implies causality for functional reactive programs
PLPV '13 Proceedings of the 7th workshop on Programming languages meets program verification
Asynchronous functional reactive programming for GUIs
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Higher-order functional reactive programming without spacetime leaks
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Monadic functional reactive programming
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
Hi-index | 0.00 |
Functional Reactive Programming (FRP) is an approach to reactive programming where systems are structured as networks of functions operating on signals. FRP is based on the synchronous data-flow paradigm and supports both continuous-time and discrete-time signals (hybrid systems). What sets FRP apart from most other languages for similar applications is its support for systems with dynamic structure and for higher-order reactive constructs. Statically guaranteeing correctness properties of programs is an attractive proposition. This is true in particular for typical application domains for reactive programming such as embedded systems. To that end, many existing reactive languages have type systems or other static checks that guarantee domain-specific properties, such as feedback loops always being well-formed. However, they are limited in their capabilities to support dynamism and higher-order data-flow compared with FRP. Thus, the onus of ensuring such properties of FRP programs has so far been on the programmer as established static techniques do not suffice. In this paper, we show how dependent types allow this concern to be addressed. We present an implementation of FRP embedded in the dependently-typed language Agda, leveraging the type system of the host language to craft a domain-specific (dependent) type system for FRP. The implementation constitutes a discrete, operational semantics of FRP, and as it passes the Agda type, coverage, and termination checks, we know the operational semantics is total, which means our type system is safe.