All Projects β†’ fsprojects β†’ Incremental.net

fsprojects / Incremental.net

Licence: mit
A library for incremental computations. Based on janestreet/incremental (https://github.com/janestreet/incremental) for OCaml.

Programming Languages

fsharp
127 projects

Labels

Projects that are alternatives of or similar to Incremental.net

Realm Graphql Service
GraphQL service for Realm Object Server
Stars: ✭ 44 (-33.33%)
Mutual labels:  reactive
Audio player flutter
🎧 Apple Music / Tidal Audio Player for Flutter
Stars: ✭ 52 (-21.21%)
Mutual labels:  reactive
Squid
Declarative and Reactive Networking for Swift.
Stars: ✭ 61 (-7.58%)
Mutual labels:  reactive
Yox
A lightweight mvvm framework
Stars: ✭ 1,027 (+1456.06%)
Mutual labels:  reactive
Phantom
Schema safe, type-safe, reactive Scala driver for Cassandra/Datastax Enterprise
Stars: ✭ 1,049 (+1489.39%)
Mutual labels:  reactive
Rxplaces
A Google Maps Webservice API made simple.
Stars: ✭ 56 (-15.15%)
Mutual labels:  reactive
Rxrealm
RxSwift extension for RealmSwift's types
Stars: ✭ 1,007 (+1425.76%)
Mutual labels:  reactive
Iflux
iflux = immer.js + react.js
Stars: ✭ 64 (-3.03%)
Mutual labels:  reactive
Samsara
☸️ Continuous UI
Stars: ✭ 1,051 (+1492.42%)
Mutual labels:  reactive
Jasync Sql
Java & Kotlin Async DataBase Driver for MySQL and PostgreSQL written in Kotlin
Stars: ✭ 1,092 (+1554.55%)
Mutual labels:  reactive
Inferno Most Fp Demo
A demo for the ReactJS Tampa Bay meetup showing how to build a React+Redux-like architecture from scratch using Inferno, Most.js, reactive programmning, and various functional programming tools & techniques
Stars: ✭ 45 (-31.82%)
Mutual labels:  reactive
Rxswift To Combine Cheatsheet
RxSwift to Apple’s Combine Cheat Sheet
Stars: ✭ 1,040 (+1475.76%)
Mutual labels:  reactive
Example
Example project written using Marble.js framework
Stars: ✭ 57 (-13.64%)
Mutual labels:  reactive
Trading Vue Js
πŸ’Ή Hackable charting lib for traders. You can draw literally ANYTHING on top of candlestick charts.
Stars: ✭ 1,021 (+1446.97%)
Mutual labels:  reactive
Spring Boot Webflux Swagger Starter
An example project to illustrate how to document Spring Boot Webflux with Swagger2
Stars: ✭ 62 (-6.06%)
Mutual labels:  reactive
Rxiglistkit
RxSwift wrapper for IGListKit
Stars: ✭ 44 (-33.33%)
Mutual labels:  reactive
Scalajs Bootstrap
Scala.js bootstrap components
Stars: ✭ 55 (-16.67%)
Mutual labels:  reactive
Ngqp
Declaratively synchronize form controls with the URL
Stars: ✭ 65 (-1.52%)
Mutual labels:  reactive
Android Okgraphql
Reactive GraphQl client for Android
Stars: ✭ 64 (-3.03%)
Mutual labels:  reactive
Moor
Moor is an easy to use, reactive, typesafe persistence library for Dart & Flutter
Stars: ✭ 1,090 (+1551.52%)
Mutual labels:  reactive

Incremental.NET

A library for incremental computations.

Based on janestreet/incremental for OCaml. Also inspired by Gjallarhorn.

Usage -- see tests

use Incr = new Incremental()
let Var = Incr.Var

let myOrders = Var.Create([100; 150; 200])
use maxOrder = Incremental.map Incr myOrders List.max
use minOrder = Incremental.map Incr myOrders List.min
use orderRange = Incremental.map2 Incr maxOrder minOrder (-)

let log = ResizeArray<string>()
use maxChanged = maxOrder.Subscribe (fun maxOrder -> log.Add(sprintf "Max changed to %d" maxOrder))

let worldVersion = Incr.Stabilize()

Assert.AreEqual([100; 150; 200], myOrders.Value)
Assert.AreEqual(200, maxOrder.Value)
Assert.AreEqual(100, minOrder.Value)
Assert.AreEqual(100, orderRange.Value)

myOrders.SetValue([300;400;500])
Incr.Stabilize() |> ignore

Assert.AreEqual(500, maxOrder.Value)

Assert.AreEqual("Max changed to 500", Seq.last(log))

Differences from Gjallarhorn:

  • Thread safety (easy for user to make sure they get a consistent view)
  • Control when computations happen (user must call .Stabilize())
  • Fewer features, less code

Roadmap

See also

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].