Write a Blog >>
ICFP 2018
Sun 23 - Sat 29 September 2018 St. Louis, Missouri, United States
Thu 27 Sep 2018 13:30 - 14:00 at Illinois Central - Session 2 Chair(s): Sam Lindley

Processing data at different rates is generally a hard problem in reactive programming. Buffering problems, lags, and concurrency issues often occur. Many of these problems are \emph{clock errors}, where data at different rates is combined incorrectly. Techniques to avoid clock errors, such as type-level clocks and deterministic scheduling, exist in the field of synchronous programming, but are not implemented in general-purpose languages like Haskell.

Rhine is a \emph{clock-safe} library for synchronous and asynchronous Functional Reactive Programming (FRP). It separates the aspects of clocking, scheduling and resampling from each other, and ensures clock-safety at the type level. Concurrent communication is encapsulated safely. Diverse reactive subsystems can be combined in a coherent, declarative data-flow framework, while correct interoperability of data at different rates is guaranteed by type-level clocks. This provides a general-purpose framework that simplifies multi-rate FRP systems and can be used for game development, media applications, GUIs and embedded systems, through a flexible API with many reusable components.

Thu 27 Sep

Displayed time zone: Guadalajara, Mexico City, Monterrey change

13:30 - 15:00
Session 2Haskell at Illinois Central
Chair(s): Sam Lindley University of Edinburgh, UK
13:30
30m
Talk
Rhine: FRP with Type-Level Clocks
Haskell
Manuel Bärenz University of Vienna, Austria, Ivan Perez National Institute of Aerospace, USA
DOI
14:00
30m
Talk
A High-Performance Multicore IO Manager Based on libuv (Experience Report)
Haskell
Dong Han Beijing Bytedance, China, Tao He Beijing Bytedance, China
DOI
14:30
30m
Talk
Embedding Invertible Languages with Binders: A Case of the FliPpr Language
Haskell
Kazutaka Matsuda Tohoku University, Japan, Meng Wang University of Bristol, UK
DOI