Comparing version 2.0.0 to 2.0.1
@@ -6,3 +6,13 @@ /* | ||
"use strict"; | ||
var chain, map, ap, concat, liftM, liftM2, liftA, liftA2, next, sequencea, sequence; | ||
var chain, map, ap, concat, liftM, liftM2, liftA, liftA2, compose, composer, next, sequencea, sequence, constant = ( | ||
function(x) { | ||
return (function() { | ||
return x; | ||
}); | ||
}), | ||
flip = (function(f) { | ||
return (function(x, y) { | ||
return f(y, x); | ||
}); | ||
}); | ||
(chain = (function(m, f) { | ||
@@ -41,2 +51,15 @@ return m.chain(f); | ||
})); | ||
(compose = (function(f, g) { | ||
return (function(x) { | ||
return f(x) | ||
.chain(g); | ||
}); | ||
})); | ||
var f = compose; | ||
(composer = (function(x, y) { | ||
return (function(x0) { | ||
return y(x0) | ||
.chain(x); | ||
}); | ||
})); | ||
(next = (function(p, q) { | ||
@@ -62,4 +85,6 @@ return p.chain((function() { | ||
(exports["liftA2"] = liftA2); | ||
(exports["compose"] = compose); | ||
(exports["composer"] = composer); | ||
(exports["next"] = next); | ||
(exports["sequencea"] = sequencea); | ||
(exports["sequence"] = sequence); |
@@ -8,9 +8,8 @@ /* | ||
ContT = require("./trans/cont"), | ||
runContT = ContT["runContT"], | ||
Cont; | ||
Cont, runContT = ContT["runContT"]; | ||
(Cont = ContT(Identity)); | ||
var x = (function(m, k) { | ||
var y; | ||
return runContT(m, ((y = Identity.of), (function(x0) { | ||
return y(k(x0)); | ||
return runContT(m, ((y = Identity.of), (function(z) { | ||
return y(k(z)); | ||
}))); | ||
@@ -20,4 +19,5 @@ }), | ||
(Cont.runCont = (function() { | ||
return y(x.apply(null, arguments)); | ||
var args = arguments; | ||
return y(x.apply(null, args)); | ||
})); | ||
(module.exports = Cont); |
@@ -8,10 +8,9 @@ /* | ||
DContT = require("./trans/dcont"), | ||
runDContT = DContT["runDContT"], | ||
DCont; | ||
DCont, runDContT = DContT["runDContT"]; | ||
(DCont = DContT(Identity)); | ||
var x = runDContT, | ||
y = Identity.runIdentity; | ||
var y = Identity.runIdentity; | ||
(DCont.runDCont = (function() { | ||
return y(x.apply(null, arguments)); | ||
var args = arguments; | ||
return y(runDContT.apply(null, args)); | ||
})); | ||
(module.exports = DCont); |
@@ -8,11 +8,10 @@ /* | ||
EitherT = require("./trans/either"), | ||
eitherT = EitherT["eitherT"], | ||
Either; | ||
Either, eitherT = EitherT["eitherT"]; | ||
(Either = EitherT(Identity)); | ||
var x = (function(m, l, r) { | ||
var y, y0; | ||
return eitherT(m, ((y = Identity.of), (function(x0) { | ||
return y(l(x0)); | ||
})), ((y0 = Identity.of), (function(x0) { | ||
return y0(r(x0)); | ||
return eitherT(m, ((y = Identity.of), (function(z) { | ||
return y(l(z)); | ||
})), ((y0 = Identity.of), (function(z) { | ||
return y0(r(z)); | ||
}))); | ||
@@ -22,4 +21,5 @@ }), | ||
(Either.either = (function() { | ||
return y(x.apply(null, arguments)); | ||
var args = arguments; | ||
return y(x.apply(null, args)); | ||
})); | ||
(module.exports = Either); |
@@ -8,5 +8,10 @@ /* | ||
ErrorT = require("./trans/error"), | ||
runErrorT = ErrorT["runErrorT"], | ||
Error, id = (function(x) { | ||
Error, runErrorT = ErrorT["runErrorT"], | ||
id = (function(x) { | ||
return x; | ||
}), | ||
constant = (function(x) { | ||
return (function() { | ||
return x; | ||
}); | ||
}); | ||
@@ -16,6 +21,6 @@ (Error = ErrorT(Identity)); | ||
var y, y0; | ||
return runErrorT(m, ((y = Identity.of), (function(x0) { | ||
return y(ok(x0)); | ||
})), ((y0 = Identity.of), (function(x0) { | ||
return y0(err(x0)); | ||
return runErrorT(m, ((y = Identity.of), (function(z) { | ||
return y(ok(z)); | ||
})), ((y0 = Identity.of), (function(z) { | ||
return y0(err(z)); | ||
}))); | ||
@@ -25,3 +30,4 @@ }), | ||
(Error.runError = (function() { | ||
return y(x.apply(null, arguments)); | ||
var args = arguments; | ||
return y(x.apply(null, args)); | ||
})); | ||
@@ -28,0 +34,0 @@ (Error.tryError = (function(m, e) { |
@@ -7,5 +7,4 @@ /* | ||
var __o = require("./structure"), | ||
Functor = __o["Functor"], | ||
Monad = __o["Monad"], | ||
Identity; | ||
Identity, Functor = __o["Functor"], | ||
Monad = __o["Monad"]; | ||
(Identity = (function(x) { | ||
@@ -12,0 +11,0 @@ var self = this; |
@@ -8,10 +8,8 @@ /* | ||
ListT = require("./trans/list"), | ||
runListT = ListT["runListT"], | ||
List; | ||
List, runListT = ListT["runListT"]; | ||
(List = ListT(Identity)); | ||
var x = runListT, | ||
y = Identity.runIdentity; | ||
(List.runList = (function(x0) { | ||
return y(x(x0)); | ||
var y = Identity.runIdentity; | ||
(List.runList = (function(z) { | ||
return y(runListT(z)); | ||
})); | ||
(module.exports = List); |
@@ -13,4 +13,4 @@ /* | ||
(Instance.prototype.modify = (function(f) { | ||
return get.chain((function(x) { | ||
return put(f(x)); | ||
return get.chain((function(z) { | ||
return put(f(z)); | ||
})); | ||
@@ -23,6 +23,6 @@ })); | ||
if ((m.get && m.put)) StateMonad(Instance, Instance.lift(m.get), ((x = Instance.lift), (y = m.put), ( | ||
function(x0) { | ||
return x(y(x0)); | ||
function(z) { | ||
return x(y(z)); | ||
}))); | ||
})); | ||
(module.exports = StateMonad); |
@@ -13,3 +13,4 @@ /* | ||
(State.runState = (function() { | ||
return y(x.apply(null, arguments)); | ||
var args = arguments; | ||
return y(x.apply(null, args)); | ||
})); | ||
@@ -19,3 +20,4 @@ var x0 = StateT.evalStateT, | ||
(State.evalState = (function() { | ||
return y0(x0.apply(null, arguments)); | ||
var args = arguments; | ||
return y0(x0.apply(null, args)); | ||
})); | ||
@@ -25,4 +27,5 @@ var x1 = StateT.execStateT, | ||
(State.execState = (function() { | ||
return y1(x1.apply(null, arguments)); | ||
var args = arguments; | ||
return y1(x1.apply(null, args)); | ||
})); | ||
(module.exports = State); |
@@ -7,4 +7,4 @@ /* | ||
var base = require("./base"), | ||
liftA2 = base["liftA2"], | ||
Applicative, Chain, Functor, Monad, Monoid, Semigroup, LiftInner, Transformer, __curry = (function(x, y) { | ||
Applicative, Chain, Functor, Monad, Monoid, Semigroup, LiftInner, Transformer, liftA2 = base["liftA2"], | ||
__curry = (function(x, y) { | ||
return x.bind(null, y); | ||
@@ -51,4 +51,4 @@ }); | ||
var y, m = this; | ||
return m.chain(((y = m.of), (function(x) { | ||
return y(f(x)); | ||
return m.chain(((y = m.of), (function(z) { | ||
return y(f(z)); | ||
}))); | ||
@@ -72,4 +72,4 @@ }))); | ||
var y; | ||
(outer.liftInner = liftInner(lift, ((y = inner.liftInner), (function(x) { | ||
return lift(y(x)); | ||
(outer.liftInner = liftInner(lift, ((y = inner.liftInner), (function(z) { | ||
return lift(y(z)); | ||
})), inner.liftInner)); | ||
@@ -82,4 +82,4 @@ } | ||
var y; | ||
(Instance.prototype.liftInner = liftInner(lift, ((y = m.lift), (function(x) { | ||
return lift(y(x)); | ||
(Instance.prototype.liftInner = liftInner(lift, ((y = m.lift), (function(z) { | ||
return lift(y(z)); | ||
})), m)); | ||
@@ -86,0 +86,0 @@ (Instance.liftInner = Instance.prototype.liftInner); |
@@ -7,10 +7,10 @@ /* | ||
var __o = require("../structure"), | ||
Monad = __o["Monad"], | ||
__o0 = require("../_tail"), | ||
StateMonad = require("../spec/state"), | ||
Codensity, Monad = __o["Monad"], | ||
Monoid = __o["Monoid"], | ||
Transformer = __o["Transformer"], | ||
__o0 = require("../_tail"), | ||
Tail = __o0["Tail"], | ||
trampoline = __o0["trampoline"], | ||
StateMonad = require("../spec/state"), | ||
Codensity, runCodensity = (function(m, k) { | ||
runCodensity = (function(m, k) { | ||
return new(Tail)(m.run, k); | ||
@@ -48,6 +48,5 @@ }); | ||
return new(Instance)((function(k) { | ||
var y; | ||
return c.chain(((y = trampoline), (function(x) { | ||
return y(k(x)); | ||
}))); | ||
return c.chain((function(z) { | ||
return trampoline(k(z)); | ||
})); | ||
})); | ||
@@ -58,6 +57,6 @@ })); | ||
})); | ||
var y = trampoline; | ||
(Codensity.runCodensity = (function() { | ||
return y(runCodensity.apply(null, arguments)); | ||
var args = arguments; | ||
return trampoline(runCodensity.apply(null, args)); | ||
})); | ||
(module.exports = Codensity); |
@@ -7,16 +7,16 @@ /* | ||
var __o = require("../_tail"), | ||
Tail = __o["Tail"], | ||
__o0 = require("../structure"), | ||
ContMonad = require("../spec/cont"), | ||
ContT, Tail = __o["Tail"], | ||
trampoline = __o["trampoline"], | ||
__o0 = require("../structure"), | ||
Monad = __o0["Monad"], | ||
Transformer = __o0["Transformer"], | ||
ContMonad = require("../spec/cont"), | ||
ContT, runContT = (function(m, k) { | ||
runContT = (function(m, k) { | ||
return new(Tail)(m.run, k); | ||
}); | ||
(ContT = (function(m) { | ||
var Instance = (function(run) { | ||
var self = this; | ||
(self.run = run); | ||
}); | ||
var reify, Instance = (function(run) { | ||
var self = this; | ||
(self.run = run); | ||
}); | ||
Monad(Instance, (function(x) { | ||
@@ -38,9 +38,14 @@ return new(Instance)((function(k) { | ||
return new(Instance)((function(k) { | ||
var y; | ||
return t.chain(((y = trampoline), (function(x) { | ||
return y(k(x)); | ||
}))); | ||
return t.chain((function(z) { | ||
return trampoline(k(z)); | ||
})); | ||
})); | ||
})); | ||
ContMonad(Instance, (function(f) { | ||
ContMonad(Instance, ((reify = (function(k) { | ||
return (function(x) { | ||
return new(Instance)((function(_) { | ||
return k(x); | ||
})); | ||
}); | ||
})), (function(f) { | ||
return new(Instance)((function(k) { | ||
@@ -54,9 +59,9 @@ var m0 = f((function(x) { | ||
})); | ||
})); | ||
}))); | ||
return Instance; | ||
})); | ||
var y = trampoline; | ||
(ContT.runContT = (function() { | ||
return y(runContT.apply(null, arguments)); | ||
var args = arguments; | ||
return trampoline(runContT.apply(null, args)); | ||
})); | ||
(module.exports = ContT); |
@@ -7,3 +7,7 @@ /* | ||
var __o = require("nu-stream")["stream"], | ||
append = __o["append"], | ||
UniqueT = require("./unique"), | ||
__o0 = require("../structure"), | ||
DContMonad = require("../spec/dcont"), | ||
__o1 = require("../_tail"), | ||
DContT, append = __o["append"], | ||
cons = __o["cons"], | ||
@@ -14,11 +18,7 @@ first = __o["first"], | ||
NIL = __o["NIL"], | ||
UniqueT = require("./unique"), | ||
__o0 = require("../structure"), | ||
Monad = __o0["Monad"], | ||
Transformer = __o0["Transformer"], | ||
DContMonad = require("../spec/dcont"), | ||
__o1 = require("../_tail"), | ||
Tail = __o1["Tail"], | ||
trampoline = __o1["trampoline"], | ||
DContT, x, y, Seg = (function(f) { | ||
y, Seg = (function(f) { | ||
var self = this; | ||
@@ -31,14 +31,17 @@ (self.frame = f); | ||
}), | ||
empty = NIL, | ||
push = cons, | ||
pushSeq = append, | ||
pushP = (function(t, k) { | ||
return cons(new(P)(t), k); | ||
}), | ||
pushSeg = (function(f, k) { | ||
return cons(new(Seg)(f), k); | ||
}), | ||
splitSeq = (function(t, k) { | ||
if (isEmpty(k)) return [empty, empty]; | ||
if (isEmpty(k)) return [NIL, NIL]; | ||
var x = first(k), | ||
xs = rest(k); | ||
if (((x instanceof P) && (x.prompt === t))) return [empty, xs]; | ||
if (((x instanceof P) && (x.prompt === t))) return [NIL, xs]; | ||
var __o2 = splitSeq(t, xs), | ||
a = __o2[0], | ||
b = __o2[1]; | ||
return [push(x, a), b]; | ||
return [cons(x, a), b]; | ||
}), | ||
@@ -48,5 +51,6 @@ unDContT = (function(m, k) { | ||
}), | ||
runDContT = ((x = trampoline), (y = UniqueT.runUniqueT), (function() { | ||
var x0 = unDContT.apply(null, arguments); | ||
return y(x(x0)); | ||
runDContT = ((y = UniqueT.runUniqueT), (function() { | ||
var args = arguments, | ||
z = unDContT.apply(null, args); | ||
return y(trampoline(z)); | ||
})); | ||
@@ -59,9 +63,9 @@ (DContT = (function(m) { | ||
}), | ||
appk = (function(k, x0) { | ||
appk = (function(k, x) { | ||
var c = k; | ||
do { | ||
if (((typeof c) === "function")) return M.of(c(x0)); | ||
if (((typeof c) === "function")) return M.of(c(x)); | ||
var top = first(c); | ||
if ((top instanceof Seg)) { | ||
var m0 = top.frame(x0), | ||
var m0 = top.frame(x), | ||
k0 = rest(c); | ||
@@ -74,5 +78,5 @@ return new(Tail)(m0.run, k0); | ||
}); | ||
Monad(Instance, (function(x0) { | ||
Monad(Instance, (function(x) { | ||
return new(Instance)((function(k) { | ||
return appk(k, x0); | ||
return appk(k, x); | ||
})); | ||
@@ -82,3 +86,3 @@ }), (function(f) { | ||
return new(Instance)((function(k) { | ||
var k0 = push(new(Seg)(f), k); | ||
var k0 = cons(new(Seg)(f), k); | ||
return new(Tail)(c.run, k0); | ||
@@ -89,6 +93,6 @@ })); | ||
return new(Instance)((function(k) { | ||
var x0, y0; | ||
var x; | ||
return M.lift(t.map(trampoline)) | ||
.chain(((x0 = appk.bind(null, k)), (y0 = trampoline), (function(x1) { | ||
return y0(x0(x1)); | ||
.chain(((x = appk.bind(null, k)), (function(z) { | ||
return trampoline(x(z)); | ||
}))); | ||
@@ -98,9 +102,9 @@ })); | ||
DContMonad(Instance, new(Instance)((function(k) { | ||
var x0, y0; | ||
return M.unique.chain(((x0 = appk.bind(null, k)), (y0 = trampoline), (function(x1) { | ||
return y0(x0(x1)); | ||
var x; | ||
return M.unique.chain(((x = appk.bind(null, k)), (function(z) { | ||
return trampoline(x(z)); | ||
}))); | ||
})), (function(prompt, c) { | ||
return new(Instance)((function(k) { | ||
var k0 = push(new(P)(prompt), k); | ||
var k0 = cons(new(P)(prompt), k); | ||
return new(Tail)(c.run, k0); | ||
@@ -111,5 +115,5 @@ })); | ||
var __o2 = splitSeq(prompt, k), | ||
x0 = __o2[0], | ||
x = __o2[0], | ||
xs = __o2[1], | ||
m0 = f(x0); | ||
m0 = f(x); | ||
return new(Tail)(m0.run, xs); | ||
@@ -119,3 +123,3 @@ })); | ||
return new(Instance)((function(k) { | ||
var k0 = pushSeq(subk, k); | ||
var k0 = append(subk, k); | ||
return new(Tail)(c.run, k0); | ||
@@ -127,4 +131,4 @@ })); | ||
(DContT.runDContT = (function(m, k) { | ||
return runDContT(m, push(k, empty)); | ||
return runDContT(m, cons(k, NIL)); | ||
})); | ||
(module.exports = DContT); |
@@ -7,8 +7,22 @@ /* | ||
var __o = require("../structure"), | ||
Monad = __o["Monad"], | ||
EitherMonad = require("../spec/either"), | ||
StateMonad = require("../spec/state"), | ||
EitherT, Monad = __o["Monad"], | ||
Monoid = __o["Monoid"], | ||
Transformer = __o["Transformer"], | ||
EitherMonad = require("../spec/either"), | ||
StateMonad = require("../spec/state"), | ||
EitherT; | ||
Right = (function(x) { | ||
return ({ | ||
right: true, | ||
x: x | ||
}); | ||
}), | ||
Left = (function(x) { | ||
return ({ | ||
right: false, | ||
x: x | ||
}); | ||
}), | ||
runEitherT = (function(x) { | ||
return x.run; | ||
}); | ||
(EitherT = (function(m) { | ||
@@ -19,8 +33,8 @@ var x, x0, x1, Instance = (function(run) { | ||
}); | ||
Monad(Instance, ((x = m.of), (function(x0) { | ||
var x1 = ({ | ||
Monad(Instance, ((x = m.of), (function(z) { | ||
var z0 = ({ | ||
right: true, | ||
x: x0 | ||
x: z | ||
}), | ||
y = x(x1); | ||
y = x(z0); | ||
return new(Instance)(y); | ||
@@ -30,4 +44,5 @@ })), (function(f) { | ||
return new(Instance)(c.run.chain((function(__o0) { | ||
var x1, right = __o0["right"], | ||
x0 = __o0["x"]; | ||
var right = __o0["right"], | ||
x0 = __o0["x"], | ||
x1; | ||
return (right ? ((x1 = f(x0)), x1.run) : m.of(({ | ||
@@ -61,8 +76,8 @@ right: false, | ||
})); | ||
EitherMonad(Instance, ((x1 = m.of), (function(x2) { | ||
var x3 = ({ | ||
EitherMonad(Instance, ((x1 = m.of), (function(z) { | ||
var z0 = ({ | ||
right: false, | ||
x: x2 | ||
x: z | ||
}), | ||
y = x1(x3); | ||
y = x1(z0); | ||
return new(Instance)(y); | ||
@@ -69,0 +84,0 @@ })), Instance.of); |
@@ -7,9 +7,8 @@ /* | ||
var __o = require("../structure"), | ||
Monad = __o["Monad"], | ||
Monoid = __o["Monoid"], | ||
ErrorMonad = require("../spec/error"), | ||
StateMonad = require("../spec/state"), | ||
EitherT = require("./either"), | ||
eitherT = EitherT["eitherT"], | ||
ErrorT; | ||
ErrorT, Monad = __o["Monad"], | ||
Monoid = __o["Monoid"], | ||
eitherT = EitherT["eitherT"]; | ||
(ErrorT = (function(m) { | ||
@@ -16,0 +15,0 @@ var Instance = EitherT(m); |
@@ -7,6 +7,6 @@ /* | ||
var __o = require("../structure"), | ||
Monad = __o["Monad"], | ||
Identity, Monad = __o["Monad"], | ||
Monoid = __o["Monoid"], | ||
Transformer = __o["Transformer"], | ||
Identity, runIdentityT = (function(x) { | ||
runIdentityT = (function(x) { | ||
return x.value; | ||
@@ -19,10 +19,10 @@ }); | ||
}); | ||
Monad(Instance, ((y = m.of), (function(x) { | ||
var y0 = y(x); | ||
Monad(Instance, ((y = m.of), (function(z) { | ||
var y0 = y(z); | ||
return new(Instance)(y0); | ||
})), (function(f) { | ||
var c = this; | ||
return new(Instance)(c.value.chain((function(x) { | ||
var x0 = f(x); | ||
return x0.value; | ||
return new(Instance)(c.value.chain((function(z) { | ||
var x = f(z); | ||
return x.value; | ||
}))); | ||
@@ -29,0 +29,0 @@ })); |
@@ -7,5 +7,6 @@ /* | ||
var __o = require("../base"), | ||
liftM = __o["liftM"], | ||
__o0 = require("../structure"), | ||
StateMonad = require("../spec/state"), | ||
ListT, liftM = __o["liftM"], | ||
liftM2 = __o["liftM2"], | ||
__o0 = require("../structure"), | ||
Functor = __o0["Functor"], | ||
@@ -15,4 +16,6 @@ Monoid = __o0["Monoid"], | ||
Transformer = __o0["Transformer"], | ||
StateMonad = require("../spec/state"), | ||
ListT, map = (function(f, a) { | ||
foldr = (function(f, z, a) { | ||
return Array.prototype.reduceRight.call(a, f, z); | ||
}), | ||
map = (function(f, a) { | ||
return Array.prototype.map.call(a, f); | ||
@@ -22,2 +25,7 @@ }), | ||
flatten = Function.prototype.apply.bind(Array.prototype.concat, []), | ||
flip = (function(f) { | ||
return (function(x, y) { | ||
return f(y, x); | ||
}); | ||
}), | ||
flattenM = liftM.bind(null, flatten), | ||
@@ -38,3 +46,4 @@ runListT = (function(x) { | ||
mapM = (function() { | ||
return sequence(map.apply(null, arguments)); | ||
var args = arguments; | ||
return sequence(map.apply(null, args)); | ||
}); | ||
@@ -49,5 +58,5 @@ Monoid(Instance, new(Instance)(m.of([])), (function(b) { | ||
var c = this; | ||
return new(Instance)(flattenM(c.run.chain(mapM.bind(null, (function(x) { | ||
var x0 = f0(x); | ||
return x0.run; | ||
return new(Instance)(flattenM(c.run.chain(mapM.bind(null, (function(z0) { | ||
var x = f0(z0); | ||
return x.run; | ||
}))))); | ||
@@ -54,0 +63,0 @@ })); |
@@ -7,13 +7,13 @@ /* | ||
var __o = require("../structure"), | ||
LiftInner = __o["LiftInner"], | ||
__o0 = require("../base"), | ||
map = __o0["map"], | ||
Codensity = require("./codensity"), | ||
StateI = require("./statei"), | ||
StateT, CodensityProxy = (function(Instance, m) { | ||
StateT, LiftInner = __o["LiftInner"], | ||
map = __o0["map"], | ||
CodensityProxy = (function(Instance, m) { | ||
var X = Codensity(Instance), | ||
x = X.lift, | ||
y = Instance.lift; | ||
(X.prototype.lift = (function(x0) { | ||
return x(y(x0)); | ||
(X.prototype.lift = (function(z) { | ||
return x(y(z)); | ||
})); | ||
@@ -32,17 +32,17 @@ (X.lift = X.prototype.lift); | ||
var x = StateT.runStateT, | ||
y = map.bind(null, (function(__o1) { | ||
var x0 = __o1["x"]; | ||
return x0; | ||
y = map.bind(null, (function(x0) { | ||
return x0.x; | ||
})); | ||
(StateT.evalStateT = (function() { | ||
return y(x.apply(null, arguments)); | ||
var args = arguments; | ||
return y(x.apply(null, args)); | ||
})); | ||
var x0 = StateT.runStateT, | ||
y0 = map.bind(null, (function(__o1) { | ||
var s = __o1["s"]; | ||
return s; | ||
y0 = map.bind(null, (function(x1) { | ||
return x1.s; | ||
})); | ||
(StateT.execStateT = (function() { | ||
return y0(x0.apply(null, arguments)); | ||
var args = arguments; | ||
return y0(x0.apply(null, args)); | ||
})); | ||
(module.exports = StateT); |
@@ -7,9 +7,15 @@ /* | ||
var __o = require("../structure"), | ||
Monad = __o["Monad"], | ||
__o0 = require("../base"), | ||
StateMonad = require("../spec/state"), | ||
StateT, Monad = __o["Monad"], | ||
Monoid = __o["Monoid"], | ||
Transformer = __o["Transformer"], | ||
__o0 = require("../base"), | ||
map = __o0["map"], | ||
StateMonad = require("../spec/state"), | ||
StateT, runStateT = (function(m, s) { | ||
Pair = (function(x, s) { | ||
return ({ | ||
x: x, | ||
s: s | ||
}); | ||
}), | ||
runStateT = (function(m, s) { | ||
return m.run(s); | ||
@@ -77,17 +83,17 @@ }); | ||
var x = StateT.runStateT, | ||
y = map.bind(null, (function(__o1) { | ||
var x0 = __o1["x"]; | ||
return x0; | ||
y = map.bind(null, (function(x0) { | ||
return x0.x; | ||
})); | ||
(StateT.evalStateT = (function() { | ||
return y(x.apply(null, arguments)); | ||
var args = arguments; | ||
return y(x.apply(null, args)); | ||
})); | ||
var x0 = StateT.runStateT, | ||
y0 = map.bind(null, (function(__o1) { | ||
var s = __o1["s"]; | ||
return s; | ||
y0 = map.bind(null, (function(x1) { | ||
return x1.s; | ||
})); | ||
(StateT.execStateT = (function() { | ||
return y0(x0.apply(null, arguments)); | ||
var args = arguments; | ||
return y0(x0.apply(null, args)); | ||
})); | ||
(module.exports = StateT); |
@@ -13,4 +13,5 @@ /* | ||
(Unique.runUnique = (function() { | ||
return y(x.apply(null, arguments)); | ||
var args = arguments; | ||
return y(x.apply(null, args)); | ||
})); | ||
(module.exports = Unique); |
{ | ||
"name": "akh", | ||
"version": "2.0.0", | ||
"version": "2.0.1", | ||
"description": "Monad and Monad Transformer Collection", | ||
@@ -5,0 +5,0 @@ "author": "Matt Bierner", |
@@ -18,34 +18,32 @@ # Akh | ||
### Quick Example | ||
Example is in [Khepri][khepri] but regular js works fine too. | ||
``` | ||
with | ||
import 'akh::list' List, | ||
import 'akh::trans::state' StateT | ||
in { | ||
```js | ||
const List = require('akh').list; | ||
const StateT = require('akh').trans.state; | ||
// Define a new monad using the state transformer on the list monad. | ||
var M = StateT (List); | ||
const M = StateT(List); | ||
var run = StateT.runStateT \>> List.runList; | ||
const run = (c, state) => List.runList(StateT.runStateT(c, state)); | ||
// Create a stateful computation | ||
var c = | ||
const c = | ||
M.of(1) // simple value | ||
// modify State | ||
.chain(\x -> | ||
M.modify \ s -> s + x + 'xyz') | ||
// modify state | ||
.chain(x => | ||
M.modify(s => s + x + 'xyz')) | ||
// Branch states | ||
.concat( | ||
M.put('new_state').map(\ -> 3), | ||
M.of 10, | ||
M.put('new_state').map(_ => 3), | ||
M.of(10), | ||
M.get // get the current state) | ||
// And operate on them | ||
.map(_ +, 'aa'); | ||
.map(x => x + 'aa'); | ||
// Run the computation to get list of state value pairs | ||
run(c, 'initial_state'); | ||
run(c, 'state'); | ||
[ | ||
@@ -66,3 +64,3 @@ {'x': '1aa', 's': 'state1xyz'}, | ||
``` | ||
```sh | ||
$ npm install akh | ||
@@ -75,3 +73,3 @@ ``` | ||
``` | ||
```js | ||
requirejs.config({ | ||
@@ -108,3 +106,2 @@ paths: { | ||
* ErrorT - `akh::error` - Error computation. (Monad, Functor, Applicative Functor) | ||
* Trampoline - `akh::trampoline` Trampolined computation (Monad, Functor, Applicative Functor) | ||
* Unique - `akh::unique` Get Unique int (Monad, Monoid, Functor, Applicative Functor) | ||
@@ -125,3 +122,3 @@ | ||
``` | ||
```sh | ||
# install khepri | ||
@@ -128,0 +125,0 @@ $ npm install -g khepri |
@@ -0,1 +1,2 @@ | ||
"use strict"; | ||
var Either = require('../index').either; | ||
@@ -2,0 +3,0 @@ |
@@ -82,4 +82,2 @@ var State = require('../index').state; | ||
exports.many_chain = function(test) { | ||
@@ -86,0 +84,0 @@ var c = State.of(0); |
@@ -77,1 +77,29 @@ var StateT = require('../index').trans.state; | ||
exports.many_chain = function(test) { | ||
var c = M.of(0); | ||
for (var i = 0; i < 100000; ++i) { | ||
c = c.map(function(x) { | ||
return x + 1; | ||
}); | ||
} | ||
test.deepEqual( | ||
runState(c, 's'), | ||
[{'x': 100000, 's': 's'}]); | ||
test.done(); | ||
}; | ||
exports.many_chain_inner = function(test) { | ||
var f = function(x) { | ||
if (x > 10000) return M.of(x); | ||
return M.of(x + 1).chain(f); | ||
} | ||
test.deepEqual( | ||
runState(f(0), 0), | ||
[{'x': 10001, 's': 0}]); | ||
test.done(); | ||
}; |
78539
49
2278
136