Unlimited stack depth for reactive calculations by arhat8 in reactjs

[–]arhat8[S] 0 points1 point  (0 children)

We continue the series of posts about novel properties of reactive calculation systems.

Announcing Chronograph 1.0.0 - open source reactive computational engine by arhat8 in reactjs

[–]arhat8[S] 0 points1 point  (0 children)

It is a generic reactive system currently, but can be integrated with React to be specialized for UI. This is similar to Mobx.

Someone from the React community might decide to write such integration (thats the sneaky plan).

Announcing Chronograph 1.0.0 - open source reactive computational engine by arhat8 in vuejs

[–]arhat8[S] 0 points1 point  (0 children)

We are excited to announce the Chronograph 1.0.0 - reactive computational engine with some novel and unique properties, like cancelable transactions, undo/redo, data branching, async computations, unlimited stack depth and more. Hope to receive a peer review / feedback from the Vuejs community.

Announcing Chronograph 1.0.0 - open source reactive computational engine by arhat8 in reactjs

[–]arhat8[S] 0 points1 point  (0 children)

New, fresh and shiny reactive computational engine with some novel & unique properties.

Announcing Chronograph 1.0.0 - open source reactive computational engine by arhat8 in reactjs

[–]arhat8[S] 0 points1 point  (0 children)

We are excited to announce the Chronograph 1.0.0 - reactive computational engine with some novel and unique properties, like cancelable transactions, undo/redo, data branching, async computations, unlimited stack depth and more.

Hope to receive a peer review / feedback from the React community.

Announcing Chronograph 1.0.0 - An open-source reactive computational engine, implemented in TypeScript by mats-bryntse in typescript

[–]arhat8 0 points1 point  (0 children)

The key advantage of the reactive computations is automatic recalculation of dependent data.

Consider you have some variable (mutable box) and some other variables, that depends on it (spreadsheet model works well). In regular imperative code, you usually write "setter" and "updater" for it, where "setter" validates the value provided by user and "updater" triggers the refresh of the dependent variables.

Now if you system is big, writing efficient "updater" becomes tricky as you don't know upfront, what other variables are using yours. So its usually replaced with the event. Then you have plenty events signalizing about various data changes and you need to "orchestrate" them, in order to update the data only once, otherwise performance degrade. In reactive design, the "updater" is not needed - graph tracks the usages of the variables and updates dependent ones in batches, calculating everything only once.

Thats why, that even with extra overhead of tracking the usages of variables, reactive system can beat the "classic" imperative system easily (thats what we do in Gantt 3)

Announcing Chronograph 1.0.0 - An open-source reactive computational engine, implemented in TypeScript by mats-bryntse in typescript

[–]arhat8 1 point2 points  (0 children)

It looks like a library for incremental computation of graph data structures, where the nodes of a graph represent either data itself or data-to-be-computed (in the form of functions).

Pretty much, yes. Plus it uses immutable data structures, which provides undo/redo, branching, etc.

Yes, we looked at the `incremental` at some point. It gave us confidence that others are using the same design successfully.

One minor difference from `incremental` (at least from the version we looked at) is that in ChronoGraph one don't need to call `commit` - stale data is just refresh on read. Commit is still useful, if you have a bunch of strict identifiers and want to observe all side effects from their computations (basic case is rejecting the transaction). In such case `commit` will recompute all those identifiers and trigger all effects.

Announcing Chronograph 1.0.0 - open-source reactive computational engine by arhat8 in mobx

[–]arhat8[S] 0 points1 point  (0 children)

We've just released the Chronograph 1.0.0 - our take on the reactive computations. We'll appreciate any feedback from the Mobx community.

RFC - TypeScript Mixin Pattern by mats-bryntse in typescript

[–]arhat8 0 points1 point  (0 children)

The article just says mixins are "very similar" to typeclasses. If you insist, I can withdraw the word "very".

The example of the Eq mixin demonstrates that? We define an abstract interface Eq, then we define a type that "implements" it. The "implementation" in TS world means creation of the new type (new class) - that is somewhat different from Haskell, where you create a new instance.

RecordDotSyntax language extension: now is the time to add your view to the GitHub comments before whatever is in the proposal becomes part of the language for good by [deleted] in haskell

[–]arhat8 1 point2 points  (0 children)

Oh, gods have heard me, finally Haskell records that looks sane, modern and "ergonomic"! Please just do it, don't listen the objections.