Comparing version 0.5.0 to 0.5.2
@@ -43,3 +43,7 @@ /* | ||
return new(Instance)((function(k) { | ||
return t.chain(k); | ||
return t.chain((function(f, g) { | ||
return (function(x) { | ||
return f(g(x)); | ||
}); | ||
})(trampoline, k)); | ||
})); | ||
@@ -46,0 +50,0 @@ }))); |
@@ -81,3 +81,7 @@ /* | ||
return new(Instance)((function(k) { | ||
return Unique.of(t.chain(appk.bind(null, k))); | ||
return t.chain((function(f, g) { | ||
return (function(x) { | ||
return f(g(x)); | ||
}); | ||
})(trampoline, appk.bind(null, k))); | ||
})); | ||
@@ -84,0 +88,0 @@ })); |
@@ -6,7 +6,5 @@ /* | ||
"use strict"; | ||
var __o = require("../base"), | ||
liftM = __o["liftM"], | ||
__o0 = require("../structure"), | ||
Monad = __o0["Monad"], | ||
Monoid = __o0["Monoid"], | ||
var __o = require("../structure"), | ||
Monad = __o["Monad"], | ||
Monoid = __o["Monoid"], | ||
EitherT, Right = (function(x) { | ||
@@ -13,0 +11,0 @@ return ({ |
/* | ||
* THIS FILE IS AUTO GENERATED from 'lib/trans/list.kep' | ||
* THIS FILE IS AUTO GENERATED FROM 'lib/trans/list.kep' | ||
* DO NOT EDIT | ||
*/"use strict"; | ||
*/ | ||
"use strict"; | ||
var __o = require("../base"), | ||
@@ -67,5 +68,5 @@ liftM = __o["liftM"], | ||
})); | ||
(ListT.runListT = (function(m, s) { | ||
return m.run(s); | ||
(ListT.runListT = (function(m) { | ||
return m.run(); | ||
})); | ||
(module.exports = ListT); |
@@ -9,3 +9,36 @@ /* | ||
Monoid = __o["Monoid"], | ||
StateT, Pair = (function(x, s) { | ||
__o0 = require("../base"), | ||
concat = __o0["concat"], | ||
chain = __o0["chain"], | ||
StateT, K = (function(k) { | ||
var self = this; | ||
(self.k = k); | ||
}), | ||
Chain = (function(c, f) { | ||
var self = this; | ||
(self.c = c); | ||
(self.f = f); | ||
}), | ||
Ap = (function(c, k) { | ||
var self = this; | ||
(self.c = c); | ||
(self.k = k); | ||
}), | ||
appk = (function(k, x) { | ||
return ((k instanceof Ap) ? new(Chain)(k.c(x), k.k) : k(x)); | ||
}), | ||
run = (function(cont) { | ||
var k = cont; | ||
while (true) { | ||
if ((k instanceof K))(k = k.k()); | ||
else if ((k instanceof Chain)) { | ||
var __o = k, | ||
c = __o["c"]; | ||
if ((c instanceof K))(k = new(Chain)(c.k(), k.f)); | ||
else if ((c instanceof Chain))(k = new(Chain)(c.c, new(Ap)(c.f, k.f))); | ||
else(k = appk(k.f, k.c)); | ||
} else return k; | ||
} | ||
}), | ||
Pair = (function(x, s) { | ||
return ({ | ||
@@ -30,8 +63,11 @@ "x": x, | ||
return new(Instance)((function(s) { | ||
return runStateT(c, s) | ||
.chain((function(__o) { | ||
return new(Chain)(new(K)((function() { | ||
return runStateT(c, s); | ||
})), (function(t) { | ||
return t.chain((function(__o) { | ||
var x = __o["x"], | ||
s = __o["s"]; | ||
return runStateT(f(x), s); | ||
return run(runStateT(f(x), s)); | ||
})); | ||
})); | ||
})); | ||
@@ -43,4 +79,7 @@ })); | ||
return new(Instance)((function(s) { | ||
return runStateT(a, s) | ||
.concat(runStateT(b, s)); | ||
return new(Chain)(runStateT(a, s), (function(t) { | ||
return new(Chain)(runStateT(b, s), (function(k) { | ||
return t.concat(k); | ||
})); | ||
})); | ||
})); | ||
@@ -72,3 +111,7 @@ })); | ||
})); | ||
(StateT.runStateT = runStateT); | ||
(StateT.runStateT = (function(f, g) { | ||
return (function() { | ||
return f(g.apply(null, arguments)); | ||
}); | ||
})(run, runStateT)); | ||
(StateT.evalStateT = (function(f, g) { | ||
@@ -75,0 +118,0 @@ return (function() { |
{ | ||
"name": "akh", | ||
"version": "0.5.0", | ||
"version": "0.5.2", | ||
"description": "Monad and Monad Transformer Collection", | ||
@@ -5,0 +5,0 @@ "author": "Matt Bierner", |
var ContT = require('../index').trans.cont; | ||
var List = require('../index').list; | ||
var State = require('../index').state; | ||
var run = function(c, k) { | ||
return List.runList( | ||
var run = function(c, s, k) { | ||
return State.evalState( | ||
ContT.runContT( | ||
c, | ||
function(x) { return List.of(k(x))})); | ||
function(x) { return State.of(k(x))}), | ||
s); | ||
}; | ||
@@ -15,3 +16,3 @@ | ||
var M = ContT(List); | ||
var M = ContT(State); | ||
@@ -23,4 +24,4 @@ | ||
test.deepEqual( | ||
run(c, sqr), | ||
[9]); | ||
run(c, 's', sqr), | ||
9); | ||
@@ -33,10 +34,13 @@ | ||
exports.lift = function(test) { | ||
var c = M.of(1) | ||
var c = M.of(3) | ||
.chain(function(x) { | ||
return M.lift(List.of([x, x * 2])); | ||
return M.lift(State.modify(function(s) { return s + x * 2; })); | ||
}) | ||
.chain(function(x) { | ||
return M.lift(State.get); | ||
}); | ||
test.deepEqual( | ||
run(c, id), | ||
[1, 2]); | ||
run(c, 1, id), | ||
7); | ||
@@ -43,0 +47,0 @@ test.done(); |
@@ -28,10 +28,29 @@ var State = require('../index').state; | ||
exports.chain_order = function(test) { | ||
var c = State.of(3) | ||
.chain(function(x) { | ||
return State.of(x + 5); | ||
}) | ||
.chain(function(x) { | ||
return State.of(x / 2); | ||
}); | ||
test.deepEqual( | ||
State.runState(c, 's'), | ||
{'x': 4, 's': 's'}); | ||
test.done(); | ||
}; | ||
exports.get = function(test) { | ||
var c = State.of(3).chain(function(x) { | ||
return State.get; | ||
}); | ||
var c = State.of(3) | ||
.chain(function(x) { | ||
return State.get; | ||
}) | ||
.chain(function(x) { | ||
return State.of(x + 'abc'); | ||
}); | ||
test.deepEqual( | ||
State.evalState(c, 's'), | ||
's'); | ||
'sabc'); | ||
test.done(); | ||
@@ -64,7 +83,9 @@ }; | ||
/* | ||
exports.many_chain = function(test) { | ||
var c = State.of(0); | ||
for (var i = 0; i < 10000; ++i) { | ||
for (var i = 0; i < 100000; ++i) { | ||
c = c.chain(function(x) { | ||
@@ -77,4 +98,4 @@ return State.of(x + 1); | ||
State.runState(c, 's'), | ||
{'x': 10000, 's': 's'}); | ||
{'x': 100000, 's': 's'}); | ||
test.done(); | ||
};*/ | ||
}; |
@@ -23,22 +23,17 @@ var StateT = require('../index').trans.state; | ||
test.deepEqual( | ||
evalState(c, 's'), | ||
[3]); | ||
runState(c, 's'), | ||
[{'x': 3, 's': 's'}]); | ||
test.deepEqual( | ||
execState(c, 's'), | ||
['s']); | ||
test.done(); | ||
}; | ||
exports.lift = function(test) { | ||
exports.simple_chain = function(test) { | ||
var c = M.get | ||
.chain(function(x) { | ||
return M.lift(List.of([x, x * 2])); | ||
return M.of(x + 1); | ||
}); | ||
test.deepEqual( | ||
evalState(c, 3), | ||
[3, 6]); | ||
runState(c, 3), | ||
[{'x': 4, 's': 3}]); | ||
@@ -51,8 +46,14 @@ test.done(); | ||
var c = M.of(3) | ||
.concat(M.of(5)); | ||
.concat(M.of(5)) | ||
.concat(M.put('x').chain(function(x) { return M.of(10); })) | ||
.concat(M.of(4)); | ||
test.deepEqual( | ||
evalState(c, 's'), | ||
[3, 5]); | ||
runState(c, 's'), | ||
[ | ||
{x:3, s:'s'}, | ||
{x:5, s:'s'}, | ||
{x:10, s:'x'}, | ||
{x:4, s:'s'}]); | ||
test.done(); | ||
}; | ||
}; |
@@ -36,2 +36,3 @@ var Unique = require('../index').unique; | ||
var r = Unique.runUnique(c); | ||
test.ok(r[0] !== r[1]); | ||
@@ -38,0 +39,0 @@ |
45847
33
1567