code: function equals(x, y) {
      var a = isFunction(x) ? x() : x;
      var b = isFunction(y) ? y() : y;
      var aKeys;
      if (a == b)
        return true;
      else if (a == _null || b == _null)
        return false;
      else if (isValue(a) || isValue(b))
        return isDate(a) && isDate(b) && +a==+b;
      else if (isList(a)) {
        return (a.length == b.length) &&
               !find(a, function(val, index) {
                 if (!equals(val, b[index]))
                   return true;
               });
      }
      else {
        return !isList(b) &&
               ((aKeys = keys(a)).length == keyCount(b)) &&
               !find(aKeys, function(key) {
                 if (!equals(a[key],b[key]))
                   return true;
               });
      }
    }
docs: equals if a and b have the same elements and all are equal. Supports getters.