Use new function call format in more places.

This commit is contained in:
evancz 2013-03-02 09:18:36 -08:00
parent 3926066a64
commit 58275b0002
6 changed files with 73 additions and 80 deletions

View file

@ -15,31 +15,29 @@ function complement(rgb) {
return toRGB(hsv); return toRGB(hsv);
} }
function hsva(h) { return function(s) { return function(v) { return function(a) { function hsva(h,s,v,a) {
var clr = toRGB({hue:h, saturation:s, value:v}); var clr = toRGB({hue:h, saturation:s, value:v});
clr._3 = a; clr._3 = a;
return clr; return clr;
}; }; };
} }
function hsv(h) { return function(s) { return function(v) { function hsv(h,s,v) { return toRGB({hue:h, saturation:s, value:v}); }
return toRGB({hue:h, saturation:s, value:v}); }; }; }
function toHSV(rgb) { function toHSV(rgb) {
var hsv = {}; var hsv = {};
var r = rgb._0 / 255.0, g = rgb._1 / 255.0, b = rgb._2 / 255.0; var r = rgb._0 / 255.0, g = rgb._1 / 255.0, b = rgb._2 / 255.0;
var M = Math.max(r,g,b); var M = Math.max(r,g,b);
var m = Math.min(r,g,b); var m = Math.min(r,g,b);
var c = M - m; var c = M - m;
var h = 0; var h = 0;
if (c === 0) { h = 0; } if (c === 0) { h = 0; }
else if (M === r) { h = ((g - b) / c) % 6; } else if (M === r) { h = ((g - b) / c) % 6; }
else if (M === g) { h = ((b - r) / c) + 2; } else if (M === g) { h = ((b - r) / c) + 2; }
else if (M === b) { h = ((r - g) / c) + 4; } else if (M === b) { h = ((r - g) / c) + 4; }
h *= 60; h *= 60;
return { value : M, hue : h, saturation : (M === 0 ? 0 : c / M) }; return { value : M, hue : h, saturation : (M === 0 ? 0 : c / M) };
} }
function between(lo,hi,x) { return lo <= x && x < hi; } function between(lo,hi,x) { return lo <= x && x < hi; }
@ -61,8 +59,11 @@ function toRGB(hsv) {
return { ctor:"Color", _0:norm(r+m), _1:norm(g+m), _2:norm(b+m), _3:1 }; return { ctor:"Color", _0:norm(r+m), _1:norm(g+m), _2:norm(b+m), _3:1 };
} }
Elm.Native.Color = {hsva:hsva, Elm.Native.Color = {
hsv:hsv, hsva:F4(hsva),
complement:complement, hsv:F3(hsv),
extract:extract}; complement:complement,
extract:extract
};
}()); }());

View file

@ -14,8 +14,7 @@ import List
return signal; return signal;
} }
function dir(up) { return function(down) { function dir(up, down, left, right) {
return function(left) { return function(right) {
function f(ks) { function f(ks) {
var x = 0, y = 0; var x = 0, y = 0;
while (ks.ctor == "Cons") { while (ks.ctor == "Cons") {
@ -30,11 +29,10 @@ import List
return { _:{}, x:x, y:y }; return { _:{}, x:x, y:y };
} }
return keySignal(f); return keySignal(f);
}}}
} }
function is(key) { return keySignal(Elm.List.member(key)); } function is(key) { return keySignal(Elm.List.member(key)); }
Elm.Native.Keyboard = { isDown:is, dir:dir }; Elm.Native.Keyboard = { isDown:is, dir:F4(dir) };
}()); }());

View file

@ -1,8 +1,8 @@
/** /**
module Native.List where module Native.List where
import Native.Function import Native.Function
**/ **/
(function() { (function() {
"use strict"; "use strict";
@ -34,7 +34,7 @@ import Native.Function
function range(lo,hi) { function range(lo,hi) {
var lst = Nil; var lst = Nil;
if (lo <= hi) { if (lo <= hi) {
do { lst = Cons(hi,lst) } while (hi-->lo); do { lst = Cons(hi,lst) } while (hi-->lo);
} }
return lst return lst
} }
@ -119,7 +119,7 @@ import Native.Function
} }
function scanl1(f, xs) { function scanl1(f, xs) {
xs.ctor === "Nil" ? throwError('scanl1') : return scanl(f, xs._0, xs._1); return xs.ctor === "Nil" ? throwError('scanl1') : scanl(f, xs._0, xs._1);
} }
function filter(pred, xs) { function filter(pred, xs) {

View file

@ -30,7 +30,7 @@ import JSON
} }
var Tuple0 = { ctor: "Tuple0" } var Tuple0 = { ctor: "Tuple0" }
function Tuple2(x,y) { return { ctor = "Tuple2", _0:x, _1:y }; } function Tuple2(x,y) { return { ctor = "Tuple2", _0:x, _1:y } }
function makeSpaces(s) { function makeSpaces(s) {
if (s.length == 0) { return s; } if (s.length == 0) { return s; }

View file

@ -4,19 +4,17 @@ import Signal
*/ */
(function() { (function() {
'use strict';
function inRange(min) { return function(max) { function inRange(min, max) {
return Elm.Signal.constant(Math.floor(Math.random() * (max-min+1)) + min); return Elm.Signal.constant(Math.floor(Math.random() * (max-min+1)) + min);
};
} }
function randomize(min) { return function(max) { return function(signal) { function randomize(min, max, signal) {
function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; } function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; }
return Elm.Signal.lift(f)(signal); return Elm.Signal.lift(f)(signal);
};
};
} }
Elm.Native.Random = { inRange:inRange, randomize:randomize }; Elm.Native.Random = { inRange:F2(inRange), randomize: F3(randomize) };
}()); }());

View file

@ -8,45 +8,41 @@ import Maybe
function timeNow() { return (new window.Date).getTime(); } function timeNow() { return (new window.Date).getTime(); }
function fpsWhen(desiredFPS) { return function (isOn) { function fpsWhen(desiredFPS, isOn) {
var msPerFrame = 1000 / desiredFPS; var msPerFrame = 1000 / desiredFPS;
var prev = timeNow(), curr = prev, diff = 0, wasOn = true; var prev = timeNow(), curr = prev, diff = 0, wasOn = true;
var ticker = Elm.Signal.constant(diff); var ticker = Elm.Signal.constant(diff);
function tick(zero) { return function() { function tick(zero) { return function() {
curr = timeNow(); curr = timeNow();
diff = zero ? 0 : curr - prev; diff = zero ? 0 : curr - prev;
prev = curr; prev = curr;
Dispatcher.notify(ticker.id, diff); Dispatcher.notify(ticker.id, diff);
}; };
}
var timeoutID = 0;
function f(isOn, t) {
if (isOn) {
timeoutID = setTimeout(tick(!wasOn && isOn), msPerFrame);
} else if (wasOn) {
clearTimeout(timeoutID);
} }
var timeoutID = 0; wasOn = isOn;
function f(isOn) { return function(t) { return t;
if (isOn) { }
timeoutID = setTimeout(tick(!wasOn && isOn), msPerFrame); return Elm.Signal.lift2(F2(f))(isOn)(ticker);
} else if (wasOn) {
clearTimeout(timeoutID);
}
wasOn = isOn;
return t;
};
}
return Elm.Signal.lift2(f)(isOn)(ticker);
};
} }
function everyWhen(isOn) { return function(t) { function everyWhen(t, isOn) {
var clock = Elm.Signal.constant(timeNow()); var clock = Elm.Signal.constant(timeNow());
function tellTime() { Dispatcher.notify(clock.id, timeNow()); } function tellTime() { Dispatcher.notify(clock.id, timeNow()); }
setInterval(tellTime, t); setInterval(tellTime, t);
return clock; return clock;
};
} }
function since(t) { return function(s) { function since(t, s) {
function cmp(a) { return function(b) { return !Value.eq(a,b); }; } function cmp(a,b) { return !Value.eq(a,b) }
var dcount = Elm.Signal.count(Elm.Signal.delay(t)(s)); var dcount = Elm.Signal.count(Elm.Signal.delay(t)(s));
return Elm.Signal.lift2(cmp)(Elm.Signal.count(s))(dcount); return Elm.Signal.lift2(F2(cmp))(Elm.Signal.count(s))(dcount);
};
} }
function after(t) { function after(t) {
t *= 1000; t *= 1000;
@ -65,11 +61,11 @@ import Maybe
return isNaN(t) ? Elm.Maybe.Nothing : Elm.Maybe.Just(t); return isNaN(t) ? Elm.Maybe.Nothing : Elm.Maybe.Just(t);
} }
Elm.Native.Time = { Elm.Native.Time = {
fpsWhen : fpsWhen, fpsWhen : F2(fpsWhen),
fps : function(t) { return fpsWhen(t)(Elm.Signal.constant(true)); }, fps : function(t) { return fpsWhen(t, Elm.Signal.constant(true)); },
every : everyWhen(Elm.Signal.constant(true)), every : function(t) { return everyWhen(t, Elm.Signal.constant(true)) },
delay : Elm.Signal.delay, delay : Elm.Signal.delay,
since : since, since : F2(since),
after : after, after : after,
before : before, before : before,
toDate : function(t) { return new window.Date(t); }, toDate : function(t) { return new window.Date(t); },