Hijacks do
expressions with bitwise left shift (<<
) to implement the for
/yield
syntax we all know and ❤️ from scala.
If you don't like using the tasiest syntax sugar available, then stay away!
However, if you like feeling alive and the taste of the kool-aid they're handing out in fp land, then look no further!
You can turn:
getFoo("/api/foo").chain(foo => {
return getBar("/api/bar").chain(bar => {
const lol = bar.name;
return getBaz("/api/baz/" + lol).map(baz => {
return foo + bar + baz;
});
});
});
into:
do {
foo << getFoo("/api/foo")
bar << getBar("/api/bar")
const lol = bar.name;
baz << getBaz("/api/baz/" + lol)
foo + bar + baz;
}
Limitations:
- Top expression must be a 'bind' expression, i.e.
x << y
- Last line must be a plain expression (not a bind expression)
- Coworkers will loathe you when you try to explain monads to them.