lib/MissMatch.js
function bind(n,p,v) {
    var m = p(v);
    if(m.result) {
       // Throw an exception if the same name is bound multiple times. 
      if(bindingContext.hasOwnProperty(n)) {
        throw "Name '" + n + "' is already used in another binding.";
      }
         
      bindingContext[n] = m.obj ? m.obj[m.param] : m.param;
    }

    /**
     * When the rest of an array is matched, the binding value has to
     * be changed after executing bind. Thats because at bind time the
     * rest of the array is not known. Therefore the name of the last
     * binding is stored and can be retrieved in the continuing function.
     */
    m.this_binding = n;
    return m;
  }
function bind(n,p,v) {
    var m = p(v);
    if(m.result) {
       // Throw an exception if the same name is bound multiple times. 
      if(bindingContext.hasOwnProperty(n)) {
        throw "Name '" + n + "' is already used in another binding.";
      }
         
      bindingContext[n] = m.obj ? m.obj[m.param] : m.param;
    }

    /**
     * When the rest of an array is matched, the binding value has to
     * be changed after executing bind. Thats because at bind time the
     * rest of the array is not known. Therefore the name of the last
     * binding is stored and can be retrieved in the continuing function.
     */
    m.this_binding = n;
    return m;
  }
function bind ( n , p , v ) { var m = p ( v ) ; if ( m . result ) { // Throw an exception if the same name is bound multiple times.  if ( bindingContext . hasOwnProperty ( n ) ) { throw "Name '" + n + "' is already used in another binding." ; } bindingContext [ n ] = m . obj ? m . obj [ m . param ] : m . param ; } /**
     * When the rest of an array is matched, the binding value has to
     * be changed after executing bind. Thats because at bind time the
     * rest of the array is not known. Therefore the name of the last
     * binding is stored and can be retrieved in the continuing function.
     */ m . this_binding = n ; return m ; }
bind acts like a predicate but it also binds a variable to a
name and puts it in the binding context. The parameters are:
n: the binding name
p: the actual predicate associated with this binding
v: the value that this function is executed on.

The first two parameters have to be parameterized by
the comiler (curry). The fourth parameter is passed in at
runtime.
bind acts like a predicate but it also binds a variable to a name and puts it in the binding context . The parameters are : n : the binding name p : the actual predicate associated with this binding v : the value that this function is executed on .