Shpadoinkle-backend-pardiff: A Virtual Dom in pure Haskell, based on Html as an Alignable Functor.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

Virtual Dom diffing in pure Haskell. The Diffing is a lawful usage of alignWith from the Data.These package. This implimentation stores a reference to the RawNode for each node in the virtual tree, merging keyed and unkeyed virtual dom techniques.


[Skip to Readme]

Properties

Versions 0.0.0.1, 0.0.0.1, 0.1.0.0, 0.1.0.1, 0.2.0.0, 0.3.0.0, 0.3.0.1
Change log CHANGELOG.md
Dependencies base (>=4.12.0 && <4.13), compactable (>=0.1.2 && <0.2), containers (>=0.6.0 && <0.7), file-embed (>=0.0.11 && <0.1), jsaddle (>=0.9.7 && <0.20), lens (>=4.17.1 && <4.18), mtl (>=2.2.2 && <2.3), neat-interpolation (>=0.3.2 && <0.4), random (>=1.1 && <1.2), semialign (>=1 && <1.1), Shpadoinkle (>=0.0.0 && <0.1), text (>=1.2.3 && <1.3), these (>=1.0.1 && <1.1), unliftio (>=0.2.12 && <0.3), uuid (>=1.3.13 && <1.4) [details]
License BSD-3-Clause
Author Isaac Shapira
Maintainer fresheyeball@protonmail.com
Category Web
Source repo head: git clone https://gitlab.com/fresheyeball/Shpadoinkle.git
Uploaded by fresheyeball at 2020-05-09T21:14:23Z

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for Shpadoinkle-backend-pardiff-0.0.0.1

[back to package description]

Shpadoinkle Backend ParDiff

Goldwater Hackage Hackage Deps Hackage CI

Shpadoinkle's ParDiff backend is a virtual dom diffing system written in pure Haskell. It currently serves as the canonical backend for Shpadoinkle, such that the behavior of other backends should conform.

The virtual tree in ParDiff contains a reference to the RawNode for each element. Merging unkeyed and keyed virtual dom techniques together. This allows for rendering to be performed in a keyed fashion for all nodes, while not requiring additional memory or developer overhead.

The diffing itself is a lawful usage of alignWith from the Data.These package. By modeling Html as an Alignable Functor, we get principled diffing with clear separation of concerns.

IO is done via JSaddle and works with both GHC and GHCjs.