do-syntax

Haskell like do-syntax for JavaScript

Haskell like do-syntax for JavaScript

##Example

###List monad

var
doSyntax = require('do-syntax'),
 
xs = [1,2],
ys = eval(doSyntax.syntax)(doSyntax.listM, function () {
    x1 <- xs;
    x2 <- xs;
    return pure([x1, x2]);
});
 
console.log(ys); // [[1,1],[1,2],[2,1],[2,2]] 

###Async Monad

var
fs = require('fs'),
doSyntax = require('do-syntax');
 
eval(doSyntax.syntax)(doSyntax.asynxM, function () {
    file1 <- async(fs.readFile)('file1.txt', 'UTF-8');
    file2 <- async(fs.readFile)('file2.txt', 'UTF-8');
    console.log(file1 + file2);
    return pure();
})(function (err) {
    //error callback 
    console.log(err);
});