// Generated by purs version 0.13.6 "use strict"; var Control_Alt = require("../Control.Alt/index.js"); 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_Monad = require("../Control.Monad/index.js"); var Control_Monad_Error_Class = require("../Control.Monad.Error.Class/index.js"); var Data_Either = require("../Data.Either/index.js"); var Data_Functor = require("../Data.Functor/index.js"); var Data_Semigroup = require("../Data.Semigroup/index.js"); var ExceptT = function (x) { return x; }; var withExceptT = function (dictFunctor) { return function (f) { return function (v) { var mapLeft = function (v1) { return function (v2) { if (v2 instanceof Data_Either.Right) { return new Data_Either.Right(v2.value0); }; if (v2 instanceof Data_Either.Left) { return new Data_Either.Left(v1(v2.value0)); }; throw new Error("Failed pattern match at Control.Monad.Except.Trans (line 42, column 3 - line 42, column 32): " + [ v1.constructor.name, v2.constructor.name ]); }; }; return ExceptT(Data_Functor.map(dictFunctor)(mapLeft(f))(v)); }; }; }; var runExceptT = function (v) { return v; }; var mapExceptT = function (f) { return function (v) { return f(v); }; }; var functorExceptT = function (dictFunctor) { return new Data_Functor.Functor(function (f) { return mapExceptT(Data_Functor.map(dictFunctor)(Data_Functor.map(Data_Either.functorEither)(f))); }); }; var monadExceptT = function (dictMonad) { return new Control_Monad.Monad(function ($dollar__unused) { return applicativeExceptT(dictMonad); }, function ($dollar__unused) { return bindExceptT(dictMonad); }); }; var bindExceptT = function (dictMonad) { return new Control_Bind.Bind(function ($dollar__unused) { return applyExceptT(dictMonad); }, function (v) { return function (k) { return Control_Bind.bind(dictMonad.Bind1())(v)(Data_Either.either((function () { var $106 = Control_Applicative.pure(dictMonad.Applicative0()); return function ($107) { return $106(Data_Either.Left.create($107)); }; })())(function (a) { var v1 = k(a); return v1; })); }; }); }; var applyExceptT = function (dictMonad) { return new Control_Apply.Apply(function ($dollar__unused) { return functorExceptT(((dictMonad.Bind1()).Apply0()).Functor0()); }, Control_Monad.ap(monadExceptT(dictMonad))); }; var applicativeExceptT = function (dictMonad) { return new Control_Applicative.Applicative(function ($dollar__unused) { return applyExceptT(dictMonad); }, (function () { var $108 = Control_Applicative.pure(dictMonad.Applicative0()); return function ($109) { return ExceptT($108(Data_Either.Right.create($109))); }; })()); }; var monadThrowExceptT = function (dictMonad) { return new Control_Monad_Error_Class.MonadThrow(function ($dollar__unused) { return monadExceptT(dictMonad); }, (function () { var $110 = Control_Applicative.pure(dictMonad.Applicative0()); return function ($111) { return ExceptT($110(Data_Either.Left.create($111))); }; })()); }; var altExceptT = function (dictSemigroup) { return function (dictMonad) { return new Control_Alt.Alt(function ($dollar__unused) { return functorExceptT(((dictMonad.Bind1()).Apply0()).Functor0()); }, function (v) { return function (v1) { return Control_Bind.bind(dictMonad.Bind1())(v)(function (rm) { if (rm instanceof Data_Either.Right) { return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Right(rm.value0)); }; if (rm instanceof Data_Either.Left) { return Control_Bind.bind(dictMonad.Bind1())(v1)(function (rn) { if (rn instanceof Data_Either.Right) { return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Right(rn.value0)); }; if (rn instanceof Data_Either.Left) { return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Left(Data_Semigroup.append(dictSemigroup)(rm.value0)(rn.value0))); }; throw new Error("Failed pattern match at Control.Monad.Except.Trans (line 86, column 9 - line 88, column 49): " + [ rn.constructor.name ]); }); }; throw new Error("Failed pattern match at Control.Monad.Except.Trans (line 82, column 5 - line 88, column 49): " + [ rm.constructor.name ]); }); }; }); }; }; module.exports = { ExceptT: ExceptT, runExceptT: runExceptT, withExceptT: withExceptT, mapExceptT: mapExceptT, functorExceptT: functorExceptT, applyExceptT: applyExceptT, applicativeExceptT: applicativeExceptT, bindExceptT: bindExceptT, monadExceptT: monadExceptT, altExceptT: altExceptT, monadThrowExceptT: monadThrowExceptT };