// Generated by purs version 0.14.5
"use strict";
var Control_Applicative = require("../Control.Applicative/index.js");
var Control_Monad_RWS_Trans = require("../Control.Monad.RWS.Trans/index.js");
var Control_Monad_Reader_Class = require("../Control.Monad.Reader.Class/index.js");
var Control_Monad_State_Class = require("../Control.Monad.State.Class/index.js");
var Control_Monad_Writer_Class = require("../Control.Monad.Writer.Class/index.js");
var Data_Identity = require("../Data.Identity/index.js");
var Data_Newtype = require("../Data.Newtype/index.js");
var withRWS = Control_Monad_RWS_Trans.withRWST;
var rws = function (f) {
    return function (r) {
        return function (s) {
            return Control_Applicative.pure(Data_Identity.applicativeIdentity)(f(r)(s));
        };
    };
};
var runRWS = function (m) {
    return function (r) {
        return function (s) {
            var v = m(r)(s);
            return v;
        };
    };
};
var mapRWS = function (f) {
    return Control_Monad_RWS_Trans.mapRWST((function () {
        var $3 = Data_Newtype.unwrap();
        return function ($4) {
            return Data_Identity.Identity(f($3($4)));
        };
    })());
};
var execRWS = function (m) {
    return function (r) {
        return function (s) {
            return Data_Newtype.unwrap()(Control_Monad_RWS_Trans.execRWST(Data_Identity.monadIdentity)(m)(r)(s));
        };
    };
};
var evalRWS = function (m) {
    return function (r) {
        return function (s) {
            return Data_Newtype.unwrap()(Control_Monad_RWS_Trans.evalRWST(Data_Identity.monadIdentity)(m)(r)(s));
        };
    };
};
module.exports = {
    rws: rws,
    runRWS: runRWS,
    evalRWS: evalRWS,
    execRWS: execRWS,
    mapRWS: mapRWS,
    withRWS: withRWS,
    RWSResult: Control_Monad_RWS_Trans.RWSResult,
    RWST: Control_Monad_RWS_Trans.RWST,
    evalRWST: Control_Monad_RWS_Trans.evalRWST,
    execRWST: Control_Monad_RWS_Trans.execRWST,
    lift: Control_Monad_RWS_Trans.lift,
    mapRWST: Control_Monad_RWS_Trans.mapRWST,
    runRWST: Control_Monad_RWS_Trans.runRWST,
    withRWST: Control_Monad_RWS_Trans.withRWST,
    ask: Control_Monad_Reader_Class.ask,
    asks: Control_Monad_Reader_Class.asks,
    local: Control_Monad_Reader_Class.local,
    get: Control_Monad_State_Class.get,
    gets: Control_Monad_State_Class.gets,
    modify: Control_Monad_State_Class.modify,
    modify_: Control_Monad_State_Class.modify_,
    put: Control_Monad_State_Class.put,
    state: Control_Monad_State_Class.state,
    censor: Control_Monad_Writer_Class.censor,
    listen: Control_Monad_Writer_Class.listen,
    listens: Control_Monad_Writer_Class.listens,
    pass: Control_Monad_Writer_Class.pass,
    tell: Control_Monad_Writer_Class.tell
};
