We present a new interface for practical Functional Reactive Programming (FRP) that (1) is close in spirit to the original FRP ideas, (2) does not have the original space-leak problems, without using arrows or advanced types, and (3) provides a simple and expressive way for performing IO actions from FRP code. We also provide a denotational semantics for this new interface, and a technique (using Kripke logical relations) for reasoning about which FRP functions may "forget their past", i.e. which functions do not have an inherent space-leak. Finally, we show how we have implemented this interface as a Haskell library called FRPNow.
%0 Conference Paper
%1 vanderploeg2015practical
%A van der Ploeg, Atze
%A Claessen, Koen
%B Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming
%D 2015
%I ACM
%K 68n18-functional-programming-and-lambda-calculus 68n19-other-programming-paradigms Haskell frp
%R 10.1145/2784731.2784752
%T Practical principled FRP: forget the past, change the future, FRPNow!
%U https://dl.acm.org/doi/10.1145/2784731.2784752
%X We present a new interface for practical Functional Reactive Programming (FRP) that (1) is close in spirit to the original FRP ideas, (2) does not have the original space-leak problems, without using arrows or advanced types, and (3) provides a simple and expressive way for performing IO actions from FRP code. We also provide a denotational semantics for this new interface, and a technique (using Kripke logical relations) for reasoning about which FRP functions may "forget their past", i.e. which functions do not have an inherent space-leak. Finally, we show how we have implemented this interface as a Haskell library called FRPNow.
@inproceedings{vanderploeg2015practical,
abstract = {We present a new interface for practical Functional Reactive Programming (FRP) that (1) is close in spirit to the original FRP ideas, (2) does not have the original space-leak problems, without using arrows or advanced types, and (3) provides a simple and expressive way for performing IO actions from FRP code. We also provide a denotational semantics for this new interface, and a technique (using Kripke logical relations) for reasoning about which FRP functions may "forget their past", i.e. which functions do not have an inherent space-leak. Finally, we show how we have implemented this interface as a Haskell library called FRPNow.},
added-at = {2023-10-07T12:15:55.000+0200},
author = {van der Ploeg, Atze and Claessen, Koen},
biburl = {https://www.bibsonomy.org/bibtex/285b2c3e82dcba502451d49cbc1c2dc86/gdmcbain},
booktitle = {Proceedings of the 20th {ACM} {SIGPLAN} International Conference on Functional Programming},
doi = {10.1145/2784731.2784752},
interhash = {5000f1301270e8daa57c9d50e6c4c74d},
intrahash = {85b2c3e82dcba502451d49cbc1c2dc86},
keywords = {68n18-functional-programming-and-lambda-calculus 68n19-other-programming-paradigms Haskell frp},
month = aug,
publisher = {{ACM}},
timestamp = {2023-10-29T21:41:08.000+0100},
title = {Practical principled {FRP}: forget the past, change the future, {FRPNow}!},
url = {https://dl.acm.org/doi/10.1145/2784731.2784752},
year = 2015
}