UNPKG

crocks

Version:

A collection of well known Algebraic Datatypes for your utter enjoyment.

50 lines (44 loc) 1.76 kB
/** @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 }