Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 14 additions & 15 deletions src/Control/Apply.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
"use strict";

exports.arrayApply = function (fs) {
return function (xs) {
var l = fs.length;
var k = xs.length;
var result = new Array(l*k);
var n = 0;
for (var i = 0; i < l; i++) {
var f = fs[i];
for (var j = 0; j < k; j++) {
result[n++] = f(xs[j]);
}
}
return result;
};
export const arrayApply = function (fs) {
return function (xs) {
var l = fs.length;
var k = xs.length;
var result = new Array(l*k);
var n = 0;
for (var i = 0; i < l; i++) {
var f = fs[i];
for (var j = 0; j < k; j++) {
result[n++] = f(xs[j]);
}
}
return result;
};
};
17 changes: 8 additions & 9 deletions src/Control/Bind.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
"use strict";

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;
};
export const 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;
};
};
12 changes: 6 additions & 6 deletions src/Data/Bounded.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
"use strict";

exports.topInt = 2147483647;
exports.bottomInt = -2147483648;
export const topInt = 2147483647;
export const bottomInt = -2147483648;

exports.topChar = String.fromCharCode(65535);
exports.bottomChar = String.fromCharCode(0);
export const topChar = String.fromCharCode(65535);
export const bottomChar = String.fromCharCode(0);

exports.topNumber = Number.POSITIVE_INFINITY;
exports.bottomNumber = Number.NEGATIVE_INFINITY;
export const topNumber = Number.POSITIVE_INFINITY;
export const bottomNumber = Number.NEGATIVE_INFINITY;
37 changes: 17 additions & 20 deletions src/Data/Eq.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,22 @@
"use strict";

var refEq = function (r1) {
return function (r2) {
return r1 === r2;
};
return function (r2) {
return r1 === r2;
};
};

exports.eqBooleanImpl = refEq;
exports.eqIntImpl = refEq;
exports.eqNumberImpl = refEq;
exports.eqCharImpl = refEq;
exports.eqStringImpl = refEq;

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;
export const 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;
};
};
};
};
export { refEq as eqBooleanImpl };
export { refEq as eqIntImpl };
export { refEq as eqNumberImpl };
export { refEq as eqCharImpl };
export { refEq as eqStringImpl };
34 changes: 17 additions & 17 deletions src/Data/EuclideanRing.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
"use strict";

exports.intDegree = function (x) {
return Math.min(Math.abs(x), 2147483647);
export const intDegree = function (x) {
return Math.min(Math.abs(x), 2147483647);
};

// See the Euclidean definition in
// https://en.m.wikipedia.org/wiki/Modulo_operation.
exports.intDiv = function (x) {
return function (y) {
if (y === 0) return 0;
return y > 0 ? Math.floor(x / y) : -Math.floor(x / -y);
};
export const intDiv = function (x) {
return function (y) {
if (y === 0) return 0;
return y > 0 ? Math.floor(x / y) : -Math.floor(x / -y);
};
};

exports.intMod = function (x) {
return function (y) {
if (y === 0) return 0;
var yy = Math.abs(y);
return ((x % yy) + yy) % yy;
};
export const intMod = function (x) {
return function (y) {
if (y === 0) return 0;
var yy = Math.abs(y);
return ((x % yy) + yy) % yy;
};
};

exports.numDiv = function (n1) {
return function (n2) {
return n1 / n2;
};
export const numDiv = function (n1) {
return function (n2) {
return n1 / n2;
};
};
19 changes: 9 additions & 10 deletions src/Data/Functor.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
"use strict";

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;
};
export const 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;
};
};
23 changes: 10 additions & 13 deletions src/Data/HeytingAlgebra.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
"use strict";

exports.boolConj = function (b1) {
return function (b2) {
return b1 && b2;
};
export const boolConj = function (b1) {
return function (b2) {
return b1 && b2;
};
};

exports.boolDisj = function (b1) {
return function (b2) {
return b1 || b2;
};
export const boolDisj = function (b1) {
return function (b2) {
return b1 || b2;
};
};

exports.boolNot = function (b) {
return !b;
export const boolNot = function (b) {
return !b;
};
72 changes: 35 additions & 37 deletions src/Data/Ord.js
Original file line number Diff line number Diff line change
@@ -1,45 +1,43 @@
"use strict";

var unsafeCompareImpl = function (lt) {
return function (eq) {
return function (gt) {
return function (x) {
return function (y) {
return x < y ? lt : x === y ? eq : gt;
return function (eq) {
return function (gt) {
return function (x) {
return function (y) {
return x < y ? lt : x === y ? eq : gt;
};
};
};
};
};
};
};

exports.ordBooleanImpl = unsafeCompareImpl;
exports.ordIntImpl = unsafeCompareImpl;
exports.ordNumberImpl = unsafeCompareImpl;
exports.ordStringImpl = unsafeCompareImpl;
exports.ordCharImpl = unsafeCompareImpl;

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;
}
export const 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;
}
};
};
};
};
export { unsafeCompareImpl as ordBooleanImpl };
export { unsafeCompareImpl as ordIntImpl };
export { unsafeCompareImpl as ordNumberImpl };
export { unsafeCompareImpl as ordStringImpl };
export { unsafeCompareImpl as ordCharImpl };
20 changes: 9 additions & 11 deletions src/Data/Ring.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
"use strict";

exports.intSub = function (x) {
return function (y) {
/* jshint bitwise: false */
return x - y | 0;
};
export const intSub = function (x) {
return function (y) {
/* jshint bitwise: false */
return x - y | 0;
};
};

exports.numSub = function (n1) {
return function (n2) {
return n1 - n2;
};
export const numSub = function (n1) {
return function (n2) {
return n1 - n2;
};
};
24 changes: 12 additions & 12 deletions src/Data/Semigroup.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
"use strict";

exports.concatString = function (s1) {
return function (s2) {
return s1 + s2;
};
export const concatString = function (s1) {
return function (s2) {
return s1 + s2;
};
};

exports.concatArray = function (xs) {
return function (ys) {
if (xs.length === 0) return ys;
if (ys.length === 0) return xs;
return xs.concat(ys);
};
export const concatArray = function (xs) {
return function (ys) {
if (xs.length === 0)
return ys;
if (ys.length === 0)
return xs;
return xs.concat(ys);
};
};
40 changes: 18 additions & 22 deletions src/Data/Semiring.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,23 @@
"use strict";

exports.intAdd = function (x) {
return function (y) {
/* jshint bitwise: false */
return x + y | 0;
};
export const 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;
};
export const intMul = function (x) {
return function (y) {
/* jshint bitwise: false */
return x * y | 0;
};
};

exports.numAdd = function (n1) {
return function (n2) {
return n1 + n2;
};
export const numAdd = function (n1) {
return function (n2) {
return n1 + n2;
};
};

exports.numMul = function (n1) {
return function (n2) {
return n1 * n2;
};
export const numMul = function (n1) {
return function (n2) {
return n1 * n2;
};
};
Loading