purescript-0.8.1.0: tests/support/prelude/src/Prelude.js
/* global exports */
"use strict";
// module Prelude
//- Functor --------------------------------------------------------------------
exports.arrayMap = function (f) {
return function (arr) {
var l = arr.length;
var result = new Array(l);
for (var i = 0; i < l; i++) {
result[i] = f(arr[i]);
}
return result;
};
};
//- Bind -----------------------------------------------------------------------
exports.arrayBind = function (arr) {
return function (f) {
var result = [];
for (var i = 0, l = arr.length; i < l; i++) {
Array.prototype.push.apply(result, f(arr[i]));
}
return result;
};
};
//- Monoid ---------------------------------------------------------------------
exports.concatString = function (s1) {
return function (s2) {
return s1 + s2;
};
};
exports.concatArray = function (xs) {
return function (ys) {
return xs.concat(ys);
};
};
//- Semiring -------------------------------------------------------------------
exports.intAdd = function (x) {
return function (y) {
/* jshint bitwise: false */
return x + y | 0;
};
};
exports.intMul = function (x) {
return function (y) {
/* jshint bitwise: false */
return x * y | 0;
};
};
exports.numAdd = function (n1) {
return function (n2) {
return n1 + n2;
};
};
exports.numMul = function (n1) {
return function (n2) {
return n1 * n2;
};
};
//- ModuloSemiring -------------------------------------------------------------
exports.intDiv = function (x) {
return function (y) {
/* jshint bitwise: false */
return x / y | 0;
};
};
exports.intMod = function (x) {
return function (y) {
return x % y;
};
};
exports.numDiv = function (n1) {
return function (n2) {
return n1 / n2;
};
};
//- Ring -----------------------------------------------------------------------
exports.intSub = function (x) {
return function (y) {
/* jshint bitwise: false */
return x - y | 0;
};
};
exports.numSub = function (n1) {
return function (n2) {
return n1 - n2;
};
};
//- Eq -------------------------------------------------------------------------
exports.refEq = function (r1) {
return function (r2) {
return r1 === r2;
};
};
exports.refIneq = function (r1) {
return function (r2) {
return r1 !== r2;
};
};
exports.eqArrayImpl = function (f) {
return function (xs) {
return function (ys) {
if (xs.length !== ys.length) return false;
for (var i = 0; i < xs.length; i++) {
if (!f(xs[i])(ys[i])) return false;
}
return true;
};
};
};
exports.ordArrayImpl = function (f) {
return function (xs) {
return function (ys) {
var i = 0;
var xlen = xs.length;
var ylen = ys.length;
while (i < xlen && i < ylen) {
var x = xs[i];
var y = ys[i];
var o = f(x)(y);
if (o !== 0) {
return o;
}
i++;
}
if (xlen === ylen) {
return 0;
} else if (xlen > ylen) {
return -1;
} else {
return 1;
}
};
};
};
//- Ord ------------------------------------------------------------------------
exports.unsafeCompareImpl = function (lt) {
return function (eq) {
return function (gt) {
return function (x) {
return function (y) {
return x < y ? lt : x > y ? gt : eq;
};
};
};
};
};
//- Bounded --------------------------------------------------------------------
exports.topInt = 2147483647;
exports.bottomInt = -2147483648;
exports.topChar = String.fromCharCode(65535);
exports.bottomChar = String.fromCharCode(0);
//- BooleanAlgebra -------------------------------------------------------------
exports.boolOr = function (b1) {
return function (b2) {
return b1 || b2;
};
};
exports.boolAnd = function (b1) {
return function (b2) {
return b1 && b2;
};
};
exports.boolNot = function (b) {
return !b;
};
//- Show -----------------------------------------------------------------------
exports.showIntImpl = function (n) {
return n.toString();
};
exports.showNumberImpl = function (n) {
/* jshint bitwise: false */
return n === (n | 0) ? n + ".0" : n.toString();
};
exports.showCharImpl = function (c) {
return c === "'" ? "'\\''" : "'" + c + "'";
};
exports.showStringImpl = function (s) {
return JSON.stringify(s);
};
exports.showArrayImpl = function (f) {
return function (xs) {
var ss = [];
for (var i = 0, l = xs.length; i < l; i++) {
ss[i] = f(xs[i]);
}
return "[" + ss.join(",") + "]";
};
};