crocks
Version:
A collection of well known Algebraic Datatypes for your utter enjoyment.
50 lines (44 loc) • 1.76 kB
JavaScript
/** @license ISC License (c) copyright 2017 original and current authors */
/** @author Ian Hofmann-Hicks (evil) */
var _types = {
'unk': function () { return 'unknown'; },
'All': function () { return 'All'; },
'Any': function () { return 'Any'; },
'Arrow': function () { return 'Arrow'; },
'Assign': function () { return 'Assign'; },
'Async': function () { return 'Async'; },
'Const': function (inner) { return ("Const(" + inner + ")"); },
'Either': function () { return 'Either'; },
'Endo': function () { return 'Endo'; },
'Equiv': function () { return 'Equiv'; },
'First': function () { return 'First'; },
'Identity': function () { return 'Identity'; },
'IO': function () { return 'IO'; },
'Last': function () { return 'Last'; },
'List': function () { return 'List'; },
'Max': function () { return 'Max'; },
'Maybe': function () { return 'Maybe'; },
'Min': function () { return 'Min'; },
'Pair': function () { return 'Pair'; },
'Pred': function () { return 'Pred'; },
'Prod': function () { return 'Prod'; },
'Reader': function () { return 'Reader'; },
'Result': function () { return 'Result'; },
'Star': function () { return 'Star'; },
'State': function () { return 'State'; },
'Sum': function () { return 'Sum'; },
'Tuple': function (n) { return (n + "-Tuple"); },
'Unit': function () { return 'Unit'; },
'Writer': function () { return 'Writer'; }
}
var type =
function (type) { return _types[type] || _types['unk']; }
var proxy =
function (t, ctx) { return ({ type: function () { return type(t)(ctx); } }); }
var typeFn = function (t, ver, ctx) {
var typeStr = type(t)(ctx)
return ("crocks/" + typeStr + "@" + (ver || 0))
}
module.exports = {
proxy: proxy, type: type, typeFn: typeFn
}