Skip to content
This repository has been archived by the owner on Feb 14, 2021. It is now read-only.
/ scalaz-reactive Public archive

A high-performance, purely-functional library for reactive programming based on efficient incremental computation

License

Notifications You must be signed in to change notification settings

scalaz/scalaz-reactive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

scalaz-reactive

Gitter

Goal

A high-performance, purely-functional library for reactive programming based on efficient incremental computation.

Introduction

The FRP library that can be used to simplify applications that deal with values changing in time, both independently nd as result of external events. The library should be good to build an arcade game, a robot, or a monitoring and alerting application. Performance should be achieved by laziness and incremental computation.

  • Push-pull model (does that cover incremental computation?)
  • Purely functional

Core concepts

Signal - continous data changing with time. Time is continous, some discretization will occur when consumed at some moments in time. Example: the amount of water flowing out of a bucket with a constant rate will be L = max(W0 - r * t, 0) Event - values produced in time. Example: Add one liter of water. Signals may switched by events (e.g adding water will chnage the signal to L = max(W0 X - r * t, 0) Reactive values change in time and are composed from signals and events going through a signal network.

Design choices

Push (data driven) - all events propagated through the network - ineficient Pull (demand driven) - values calculated when requested. May cause latency. May lead to duplicate calculations of data that ahs not changed. Push/pull - external events are pushed to all consumers so that eventual effect are processed.

Arrowized FRP (like Yampa) : arrows as main mean to build flows - ???

Interaction with the world: ZIO

Scala.js and DOM manupulation are out of scope for this project.

Competition

scala.rx

  • purely functional []
  • signals []

Sodium

  • purely functional [x]
  • signals [x]

Monix

  • purely functional [x]
  • signals []

Background

About

A high-performance, purely-functional library for reactive programming based on efficient incremental computation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages