on master help sign in
Add foldp1
0dee686Joey Adams
core-js/Prelude.js+1
@@ -94,6 +94,7 @@ var Prelude = function() {
94 lift3 : Signal.lift3,
94 lift3 : Signal.lift3,
95 lift4 : Signal.lift4,
95 lift4 : Signal.lift4,
96 foldp : Signal.foldp,
96 foldp : Signal.foldp,
97+ foldp1 : Signal.foldp1,
97 constant : Signal.constant,
98 constant : Signal.constant,
98 count : Signal.count,
99 count : Signal.count,
99 keepIf : Signal.keepIf,
100 keepIf : Signal.keepIf,
core-js/runtime/Dispatcher.js+4−3
@@ -50,9 +50,9 @@ var Elm = function() {
50 args[i].kids.push(this);
50 args[i].kids.push(this);
51 }
51 }
52 };
52 };
53− var fold = function(func,base,input) {
53+ var fold = function(func,base,baseIsFunc,input) {
54 this.id = Guid.guid();
54 this.id = Guid.guid();
55− this.value = base;
55+ this.value = baseIsFunc ? base(input.value) : base;
56 this.kids = [];
56 this.kids = [];
57 this.recv = function(timestep, changed, parentID) {
57 this.recv = function(timestep, changed, parentID) {
58 if (changed) { this.value = func(input.value)(this.value); }
58 if (changed) { this.value = func(input.value)(this.value); }
@@ -113,7 +113,8 @@ var Elm = function() {
113
113
114 return {Input: function(x) {return new input(x);},
114 return {Input: function(x) {return new input(x);},
115 Lift: function(f,xs){return new lift(f,xs);},
115 Lift: function(f,xs){return new lift(f,xs);},
116− Fold: function(f,b,x){return new fold(f,b,x);},
116+ Fold: function(f,b,x){return new fold(f,b,false,x);},
117+ Fold1: function(f,b,x){return new fold(f,b,true,x);},
117 keepIf : function(pred) { return function(base) { return function(sig) {
118 keepIf : function(pred) { return function(base) { return function(sig) {
118 return new dropIf(function(x) { return !pred(x)},base,sig); }; }; },
119 return new dropIf(function(x) { return !pred(x)},base,sig); }; }; },
119 dropIf : function(pred) { return function(base) { return function(sig) {
120 dropIf : function(pred) { return function(base) { return function(sig) {
core-js/runtime/Signal.js+2
@@ -347,6 +347,8 @@ var Signal = function() {
347 return Elm.Lift(f, [e1,e2,e3,e4]); }; }; }; }; },
347 return Elm.Lift(f, [e1,e2,e3,e4]); }; }; }; }; },
348 foldp : function(f) { return function(b) { return function(e) {
348 foldp : function(f) { return function(b) { return function(e) {
349 return Elm.Fold(f,b,e); }; }; },
349 return Elm.Fold(f,b,e); }; }; },
350+ foldp1 : function(f) { return function(b) { return function(e) {
351+ return Elm.Fold1(f,b,e); }; }; },
350 count : function(sig){return Elm.Fold(function(_){return function(c){return c+1;};},0,sig)},
352 count : function(sig){return Elm.Fold(function(_){return function(c){return c+1;};},0,sig)},
351 keepIf : Elm.keepIf,
353 keepIf : Elm.keepIf,
352 dropIf : Elm.dropIf,
354 dropIf : Elm.dropIf,
elm/src/Types/Hints.hs+2−1
@@ -131,7 +131,8 @@ signals =
131 , sig 3 "lift2"
131 , sig 3 "lift2"
132 , sig 4 "lift3"
132 , sig 4 "lift3"
133 , sig 5 "lift4"
133 , sig 5 "lift4"
134+ , "foldp" -:: (a ==> b ==> b) ==> b ==> signalOf a ==> signalOf b
134− , "foldp" -:: (a ==> b ==> b) ==> b ==> signalOf a ==> signalOf b
135+ , "foldp1" -:: (a ==> b ==> b) ==> (a ==> b) ==> signalOf a ==> signalOf b
135 , "randomize" -:: int ==> int ==> signalOf a ==> signalOf int
136 , "randomize" -:: int ==> int ==> signalOf a ==> signalOf int
136 , "count" -:: signalOf a ==> signalOf int
137 , "count" -:: signalOf a ==> signalOf int
137 , "keepIf" -:: (a==>bool) ==> a ==> signalOf a ==> signalOf a
138 , "keepIf" -:: (a==>bool) ==> a ==> signalOf a ==> signalOf a