Dgelong
It's not ready for production. Stay tuned.
Set of useful first-class structures which allow you to get rid of your developer's pain.
- Flatten by default.
- Minimal API sufrace area.
- Immutable.
- Lazy evaluation.
- Full interoperability between all structures and JavaScript natives.
Install
npm install dgelong --save
Motivation
I've read Fantasy Land specification. I don't want make another implementation that requires Ph.D in Math. The usage of monads should be as simple as functional composition f(g(a))
. API should be close to native. So if we're talking about data structures, they should be produced in the same way as natives: by calling constructor function with or without new
operator (I prefer the second approach).
Usage
Note: Babel is used for transpiling Dgelong's sources. The author highly recommends you to start using ECMAScript 6 in your project.
Dgelong's bundle uses UMD so it can be required in all environments (CommonJS, AMD, ES6 modules, browser).
CommonJS
var Dgelong = ;
ECMAScript 6
Just like in CommonJS Modules style you can grab everything in one object:
;
Or just use something specific, for example:
;
But, along with that, you can import particular structures by using direct paths:
;;;;
Browser
It will provide you Dgelong
global variable.
Time & Space
- Time (
bind
,subscribe
)- Future (async task as value)
- Observable (async lists)
- Space (
bind
,pull
)- Maybe (null-safe computations)
- Either (two-way composition)
Maybe
; { return n * n;} { return n % 2 ? : ;} // returns Just(25) // returns Nothing() ; // won't work
Either
; { if passwordlength < 10 return ; if !/[0-9]/g return ; return ;} ;
Future
; { return ;} ;
Observable
; var clicks = ; clicks ;