// Generated by purs version 0.13.6 "use strict"; var Control_Applicative = require("../Control.Applicative/index.js"); var Control_Apply = require("../Control.Apply/index.js"); var Control_Bind = require("../Control.Bind/index.js"); var Control_Category = require("../Control.Category/index.js"); var Data_Function = require("../Data.Function/index.js"); var Data_Functor = require("../Data.Functor/index.js"); var Nothing = (function () { function Nothing() { }; Nothing.value = new Nothing(); return Nothing; })(); var Just = (function () { function Just(value0) { this.value0 = value0; }; Just.create = function (value0) { return new Just(value0); }; return Just; })(); var maybe = function (v) { return function (v1) { return function (v2) { if (v2 instanceof Nothing) { return v; }; if (v2 instanceof Just) { return v1(v2.value0); }; throw new Error("Failed pattern match at Data.Maybe (line 217, column 1 - line 217, column 51): " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]); }; }; }; var isNothing = maybe(true)(Data_Function["const"](false)); var isJust = maybe(false)(Data_Function["const"](true)); var functorMaybe = new Data_Functor.Functor(function (v) { return function (v1) { if (v1 instanceof Just) { return new Just(v(v1.value0)); }; return Nothing.value; }; }); var fromMaybe = function (a) { return maybe(a)(Control_Category.identity(Control_Category.categoryFn)); }; var fromJust = function (dictPartial) { return function (v) { if (v instanceof Just) { return v.value0; }; throw new Error("Failed pattern match at Data.Maybe (line 268, column 1 - line 268, column 46): " + [ v.constructor.name ]); }; }; var applyMaybe = new Control_Apply.Apply(function ($dollar__unused) { return functorMaybe; }, function (v) { return function (v1) { if (v instanceof Just) { return Data_Functor.map(functorMaybe)(v.value0)(v1); }; if (v instanceof Nothing) { return Nothing.value; }; throw new Error("Failed pattern match at Data.Maybe (line 67, column 1 - line 69, column 30): " + [ v.constructor.name, v1.constructor.name ]); }; }); var bindMaybe = new Control_Bind.Bind(function ($dollar__unused) { return applyMaybe; }, function (v) { return function (v1) { if (v instanceof Just) { return v1(v.value0); }; if (v instanceof Nothing) { return Nothing.value; }; throw new Error("Failed pattern match at Data.Maybe (line 125, column 1 - line 127, column 28): " + [ v.constructor.name, v1.constructor.name ]); }; }); var applicativeMaybe = new Control_Applicative.Applicative(function ($dollar__unused) { return applyMaybe; }, Just.create); module.exports = { Nothing: Nothing, Just: Just, maybe: maybe, fromMaybe: fromMaybe, isJust: isJust, isNothing: isNothing, fromJust: fromJust, functorMaybe: functorMaybe, applyMaybe: applyMaybe, applicativeMaybe: applicativeMaybe, bindMaybe: bindMaybe };