MartinSnyder / Seamless Immutable Cursor
Licence: mit
Compact Cursor Library built on top of the excellent seamless-immutable
Stars: ✭ 54
Programming Languages
javascript
184084 projects - #8 most used programming language
Projects that are alternatives of or similar to Seamless Immutable Cursor
Purefun
Functional Programming library for Java
Stars: ✭ 37 (-31.48%)
Mutual labels: functional-programming
Redash
Tiny functional programming suite for JavaScript.
Stars: ✭ 40 (-25.93%)
Mutual labels: functional-programming
Osagai
🀄️A tiny library for creating WebComponents in a Functional way
Stars: ✭ 42 (-22.22%)
Mutual labels: functional-programming
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 (-16.67%)
Mutual labels: functional-programming
Bullseye
A functional language frontend for the Dart VM.
Stars: ✭ 53 (-1.85%)
Mutual labels: functional-programming
Ios Oss
Kickstarter for iOS. Bring new ideas to life, anywhere.
Stars: ✭ 7,840 (+14418.52%)
Mutual labels: functional-programming
Functionalrx
FunctionalRx is a collection of constructs to simplify a functional programming approach to Java and [STABLE]
Stars: ✭ 47 (-12.96%)
Mutual labels: functional-programming
Fx Ts
Computational environments and effects for TypeScript
Stars: ✭ 42 (-22.22%)
Mutual labels: functional-programming
Graphql Lodash
🛠 Data manipulation for GraphQL queries with lodash syntax
Stars: ✭ 1,003 (+1757.41%)
Mutual labels: functional-programming
Funland
Type classes for interoperability of common algebraic structures in JavaScript, TypeScript and Flow
Stars: ✭ 46 (-14.81%)
Mutual labels: functional-programming
Lambda
λ → C++ library for functional programming
Stars: ✭ 38 (-29.63%)
Mutual labels: functional-programming
Bkmrkd
Bkmrkd is a self-hosted, lightweight bookmarking service run on node.js and rethinkdb
Stars: ✭ 52 (-3.7%)
Mutual labels: functional-programming
Safedom
🔫 safedom is a safe way to you manipulate dom using a purer functional style.
Stars: ✭ 37 (-31.48%)
Mutual labels: functional-programming
Mostly Adequate Guide Ru
Mostly adequate guide to FP (in javascript, translated to russian)
Stars: ✭ 1,030 (+1807.41%)
Mutual labels: functional-programming
Tsoption
Correct, easy to use Option type for TypeScript. 🦄
Stars: ✭ 53 (-1.85%)
Mutual labels: functional-programming
Rambda
Faster and smaller alternative to Ramda
Stars: ✭ 1,066 (+1874.07%)
Mutual labels: functional-programming
Smallfunction
Stack allocated and type-erased functors 🐜
Stars: ✭ 47 (-12.96%)
Mutual labels: functional-programming
seamless-immutable-cursor
Compact Cursor Library built on top of the excellent seamless-immutable. Cursors can be used to manage transitions and manipulations of immutable structures in an application.
Presentation
A 20 minute presentation explains the utility of this library and the repository contents. Slides can be viewed here
Example
const rootCursor = new Cursor({
users: {
abby: 1,
ben: 2,
claire: 3,
dan: 4
},
documents: [
{
name: 'CV',
owner: 1,
mediaType: 'application/pdf'
},
{
name: 'References',
owner: 1,
mediaType: 'text/plain'
}
]
});
// Register a function to react to new generations of our immutable data
rootCursor.onChange((nextData, prevData, pathUpdated) => {
console.debug('Updated ' + JSON.stringify(pathUpdated));
});
// Create a cursor for a limited portion of our data hierarchy
const childCursor = rootCursor.refine(['documents', 0, 'name']);
// firstDocumentName will be 'CV'
const firstDocumentName = childCursor.data;
// Update -- this switches the data owned by rootCursor to point to
// a new generation of immutable data
childCursor.data = 'Resume';
// updatedFirstDocumentName will be 'Resume' because the cursor points
// to the location, not the specific data
const updatedFirstDocumentName = childCursor.data;
// updatedFirstDocumentNameFromRoot will ALSO be 'Resume' because the
// 'managed' data has moved to a new generation based on the prior update
const updatedFirstDocumentNameFromRoot = rootCursor.data.documents[0].name;
React Demo
The demo folder contains a simple demo that combines this library, seamless-immutable and React.
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].