Create a gist now

Instantly share code, notes, and snippets.

Embed
What would you like to do?
do-notation using sweet.js
macro $do {
case { $y:expr } => {
$y
}
case { $x:ident <- $y:expr $rest ... } => {
λ['>=']($y, function($x) {
return $do { $rest ... }
});
}
}
// Using the bilby.js functional programming library:
// https://github.com/pufuwozu/bilby.js
var λ = require('./bilby');
// Haskell:
//
// do
// x <- [1, 2]
// y <- [x, x]
// [y * 2, y * 3]
//
// [2,3,2,3,4,6,4,6]
// sweet.js:
// Can't use arrays directly because of https://github.com/mozilla/sweet.js/issues/28
// Need to manually replace a, b and c in output with array expressions.
var list = $do {
x <- a // [1, 2]
y <- b // [x, x]
c // [y * 2, y * 3]
};
console.log(list);
// [ 2, 3, 2, 3, 4, 6, 4, 6 ]
@pbouzakis

This comment has been minimized.

Show comment
Hide comment
@pbouzakis

pbouzakis Aug 3, 2014

This is awesome! Nice job

pbouzakis commented Aug 3, 2014

This is awesome! Nice job

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment