code: function identity(f) {
      return forAll(_.Int).satisfy(function(a) {
        function returnSelf(b) {
          return b;
        }
  
        return f(a).map(returnSelf).isEqual(f(a));
      });
    }
docs: /*
  A value that has a Functor must expose a 'map' method.
  The 'map' method takes one argument:
  
  a.map(f)
  
  1. 'f' must be a function.
  i.  If 'f' is not a function, the behavior of 'map' is unspecified.
  ii. 'f' can return any value.
  2. 'map' must return a value of the same Functor.
   /*
  1st Law: Identity
  'a.map((b) => b)' is equivalent to 'a'