Comparing version
10
lib.js
@@ -10,5 +10,5 @@ /* | ||
signal :: <T> ((T => void) => void) => Signal<T>; | ||
signal.lift :: <U> U => Signal<U> | ||
signal.unit :: <U> U => Signal<U> | ||
signal.combine :: <T, U,...> [Signal<T>, Signal<U>,...] => Signal<[T, U,...]> | ||
signal.flift :: <T, U,...,R> ((T, U,...) => R) => ((Signal<T>, Signal<U>,...) => Signal<R>) | ||
signal.lift :: <T, U,...,R> ((T, U,...) => R) => ((Signal<T>, Signal<U>,...) => Signal<R>) | ||
*/ | ||
@@ -75,3 +75,3 @@ | ||
signal.lift = function(x) { | ||
signal.unit = function(x) { | ||
return signal(function(broadcast) { broadcast(x); }); | ||
@@ -87,6 +87,6 @@ }; | ||
}).apply(s); | ||
}, signal.lift([])); | ||
}, signal.unit([])); | ||
}; | ||
signal.flift = function(f) { | ||
signal.lift = function(f) { | ||
return function(/*...ss*/) { | ||
@@ -93,0 +93,0 @@ return signal.combine.apply(null, arguments) |
{ | ||
"name": "m-signal", | ||
"version": "0.0.0", | ||
"version": "0.1.0", | ||
"description": "Monadic signals for asynchronous and reactive programming", | ||
@@ -5,0 +5,0 @@ "main": "lib.js", |
@@ -11,3 +11,3 @@ #m-signal | ||
**signal.lift(value)** | ||
**signal.unit(value)** | ||
@@ -20,3 +20,3 @@ Creates a signal with `value` as its only value. (Part of being a monad, and equivalent to monadic `return`.) | ||
**signal.flift(f)** | ||
**signal.lift(f)** | ||
@@ -62,5 +62,5 @@ Takes a function and returns an equivalent where each argument and the return value are all signals containing the same type as the original function. | ||
signal :: <T> ((T => void) => void) => Signal<T>; | ||
signal.lift :: <U> U => Signal<U> | ||
signal.unit :: <U> U => Signal<U> | ||
signal.combine :: <T, U,...> [Signal<T>, Signal<U>,...] => Signal<[T, U,...]> | ||
signal.flift :: <T, U,...,R> ((T, U,...) => R) => ((Signal<T>, Signal<U>,...) => Signal<R>) | ||
signal.lift :: <T, U,...,R> ((T, U,...) => R) => ((Signal<T>, Signal<U>,...) => Signal<R>) | ||
``` | ||
@@ -67,0 +67,0 @@ |
36
test.js
@@ -25,13 +25,13 @@ var tape = require('tape'); | ||
shouldProduce(t, | ||
signal.lift(2).bind(function(x) { return countTo(x, 0); }), | ||
signal.unit(2).bind(function(x) { return countTo(x, 0); }), | ||
[0,1,2], | ||
"bind(lift(a), f) <=> f(a)"); | ||
"bind(unit(a), f) <=> f(a)"); | ||
shouldProduce(t, | ||
countTo(2, 0).bind(signal.lift), | ||
countTo(2, 0).bind(signal.unit), | ||
[0,1,2], | ||
"bind(m, lift) <=> m"); | ||
"bind(m, unit) <=> m"); | ||
var sDouble = function(x) { return signal.lift(x*2); }; | ||
var sInc = function(x) { return signal.lift(x+1); }; | ||
var sDouble = function(x) { return signal.unit(x*2); }; | ||
var sInc = function(x) { return signal.unit(x+1); }; | ||
@@ -62,23 +62,23 @@ shouldProduce(t, | ||
shouldProduce(t, | ||
signal.lift(function(x) { return x; }).apply(countTo(2, 0)), | ||
signal.unit(function(x) { return x; }).apply(countTo(2, 0)), | ||
[0,1,2], | ||
"apply(lift(x => x), s) <=> s"); | ||
"apply(unit(x => x), s) <=> s"); | ||
var sDouble = signal.lift(function(x) { return x*2; }); | ||
var sInc = signal.lift(function(x) { return x+1; }); | ||
var sDouble = signal.unit(function(x) { return x*2; }); | ||
var sInc = signal.unit(function(x) { return x+1; }); | ||
shouldProduce(t, | ||
signal.lift(function(f) { return function(g) { return function(x) { return f(g(x)); }; }; }) | ||
signal.unit(function(f) { return function(g) { return function(x) { return f(g(x)); }; }; }) | ||
.apply(sDouble).apply(sInc).apply(countTo(2, 0)), | ||
[2, 4, 6], | ||
"lift(comp).apply(s).apply(t).apply(u) <=> s.apply(t.apply(u))"); | ||
"unit(comp).apply(s).apply(t).apply(u) <=> s.apply(t.apply(u))"); | ||
shouldProduce(t, | ||
sDouble.apply(signal.lift(2)), | ||
sDouble.apply(signal.unit(2)), | ||
[4], | ||
"lift(f).apply(lift(x)) <=> lift(f(x))"); | ||
"unit(f).apply(unit(x)) <=> unit(f(x))"); | ||
shouldProduce(t, | ||
signal.lift(function(f) { return f(2); }).apply(sDouble), | ||
signal.unit(function(f) { return f(2); }).apply(sDouble), | ||
[4], | ||
"lift(f => f(x)).apply(s) <=> s.apply(lift(x))"); | ||
"unit(f => f(x)).apply(s) <=> s.apply(unit(x))"); | ||
}); | ||
@@ -100,5 +100,5 @@ | ||
shouldProduce(t, | ||
signal.flift(function(a, b) { return a + b*3; })(countTo(2, 0), countTo(2, 300)), | ||
signal.lift(function(a, b) { return a + b*3; })(countTo(2, 0), countTo(2, 300)), | ||
[0, 1, 2, 5, 8], | ||
"flift"); | ||
"lift"); | ||
}); |
Sorry, the diff of this file is not supported yet
8617
-2.65%