CISPA
Browse
cispa_all_3079.pdf (8.5 MB)

Synthesizing functional reactive programs

Download (8.5 MB)
conference contribution
posted on 2023-11-29, 18:12 authored by Bernd FinkbeinerBernd Finkbeiner, Felix Klein, Ruzica Piskac, Mark Santolucito
Functional Reactive Programming (FRP) is a paradigm that has simplified the construction of reactive programs. There are many libraries that implement incarnations of FRP, using abstractions such as Applicative, Monads, and Arrows. However, finding a good control flow, that correctly manages state and switches behaviors at the right times, still poses a major challenge to developers. An attractive alternative is specifying the behavior instead of programming it, as made possible by the recently developed logic: Temporal Stream Logic (TSL). However, it has not been explored so far how Control Flow Models (CFMs), resulting from TSL synthesis, are turned into executable code that is compatible with libraries building on FRP. We bridge this gap, by showing that CFMs are a suitable formalism to be turned into Applicative, Monadic, and Arrowized FRP. We demonstrate the effectiveness of our translations on a real-world kitchen timer application, which we translate to a desktop application using the Arrowized FRP library Yampa, a web application using the Monadic Threepenny-GUI library, and to hardware using the Applicative hardware description language ClaSH.

History

Preferred Citation

Bernd Finkbeiner, Felix Klein, Ruzica Piskac and Mark Santolucito. Synthesizing functional reactive programs. In: ACM SIGPLAN International Symposium on Haskell (Haskell). 2019.

Primary Research Area

  • Reliable Security Guarantees

Name of Conference

ACM SIGPLAN International Symposium on Haskell (Haskell)

Legacy Posted Date

2020-05-25

Open Access Type

  • Unknown

BibTeX

@inproceedings{cispa_all_3079, title = "Synthesizing functional reactive programs", author = "Finkbeiner, Bernd and Klein, Felix and Piskac, Ruzica and Santolucito, Mark", booktitle="{ACM SIGPLAN International Symposium on Haskell (Haskell)}", year="2019", }

Usage metrics

    Categories

    No categories selected

    Exports

    RefWorks
    BibTeX
    Ref. manager
    Endnote
    DataCite
    NLM
    DC