Overview⚓︎
The library and the documentation are in WIP status
A .NET Linq to Objects porting with javacript naming conventions (e.g.: Select
as been ranamed to map
) and some new features (e.g.: memoize and materialize).
Main Idea⚓︎
As the previous description says, the idea is to create a kind-of-porting of .NET Linq to Objects with a naming convetions that is more javascript and functional programming oriented and not sql oriented 1.
In other words the idea is:
- to keep the LINQ Deferred Exceution and apply it to the JavaScript Iterator Protocol with a more standard way of naming well known high order functions like
map
,flatMap
,reduce
used by javascript and some functional programming libraries (e.g.: Ramdajs, SanctuaryJs, FantasyLand and lodash). - to keep the Linq repeatable execution which allows to traverse the same chain multiple times without having to recreate it from scratch every time, in this way is possible to store the chain in a variable and then trigger it to get the max and min without recreating it:
Since in javascript you cannot rely on extensions methods as in c# there is the need to create a wrapper over Iterable
to achive the same Deferred Exceution concept.
To help document the package we also take a cue from some definitions used by Apache Spark, since, in fact, the wrapper created is similar to Apache Spark's RDDs.
Hence we are going to name a code like the following:
Operations Chain example | |
---|---|
as Operations Chain or OsC.
The OsC supports two types of operations:
like Spark RDD Operations
Note
There is no multi node implementation running into iterable-linq-utility
package, evertything is done on the same machine and is single thread. From Apache Spark comes only some definitons and ideas to help to document the package itself.
So let's get started
Created: March 22, 2023