Assuming I have the following markup:
Following @paulpdaniels answer, here is what i'm using with Ramda:
var hardSet = Rx.Observable.fromEvent($('#set');
var decRes = Rx.Observable.fromEvent($('#dec');
var incRes = Rx.Observable.fromEvent($('#inc');
Rx.Observable.merge(
incRes.map(function() { return R.add(1); }),
decRes.map(function() { return R.add(-1); }),
hardSet.map(function() { return R.always(0); })
).scan(function(prev, f) {
return f(prev);
}, 0);