Bacon.js Example: Father and Son Wallet War

A bacon.js implementation of http://alfredodinapoli.wordpress.com/2011/12/24/functional-reactive-programming-kick-starter-guide/

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/bacon.js/0.3.15/Bacon.min.js"></script>

JavaScript

$().ready(function () {
  var makeCoordinate = function(v) {
    return {x: v.clientX, y: v.clientY};
  };
  var mergeStreams = function(v1, v2) {
    return {down: makeCoordinate(v1), up: makeCoordinate(v2)};
  };

  var $html = $('html');
  var mousedownStream = $html.asEventStream('mousedown');
  var mouseupStream = $html.asEventStream('mouseup');
  var dragStream = Bacon.zipWith([mousedownStream, mouseupStream],
      mergeStreams);

  dragStream.onValue(function(val) {
      window.console.log(val.down.x, val.down.y, val.up.x, val.up.y);
  });                                           
});