on master help sign in
Use faster loop for `floatList` and adjust indentation
f43af4bEvan Czaplicki
libraries/Native/Signal/Random.js+28−27
@@ -1,38 +1,39 @@
1Elm.Native.Random = {};
1Elm.Native.Random = {};
2Elm.Native.Random.make = function(elm) {
2Elm.Native.Random.make = function(elm) {
3
3
4− elm.Native = elm.Native || {};
4+ elm.Native = elm.Native || {};
5− elm.Native.Random = elm.Native.Random || {};
5+ elm.Native.Random = elm.Native.Random || {};
6− if (elm.Native.Random.values) return elm.Native.Random.values;
6+ if (elm.Native.Random.values) return elm.Native.Random.values;
7
7
8− var Signal = Elm.Signal.make(elm);
8+ var Signal = Elm.Signal.make(elm);
9− var List = Elm.Native.List.make(elm);
9+ var List = Elm.Native.List.make(elm);
10
10
11− function range(min, max, signal) {
11+ function range(min, max, signal) {
12− function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; }
12+ function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; }
13− return A2( Signal.lift, f, signal );
13+ return A2( Signal.lift, f, signal );
14− }
14+ }
15
15
16− function flt(signal) {
16+ function float_(signal) {
17− function f(x) { return Math.random(); }
17+ function f(x) { return Math.random(); }
18− return A2( Signal.lift, f, signal );
18+ return A2( Signal.lift, f, signal );
19− }
19+ }
20
20
21− function flts(signal) {
22− function f(x) {
21+ function floatList(signal) {
22+ function f(n) {
23+ if (n < 0) return List.Nil;
23− var arr = new Array(Math.max(0,x));
24+ var arr = new Array(n);
24− for (var i = 0; i < x; i++) {
25+ for (var i = n; i--; ) {
25− arr[i] = Math.random();
26+ arr[i] = Math.random();
26− }
27+ }
27− return List.fromArray(arr);
28+ return List.fromArray(arr);
29+ }
30+ return A2( Signal.lift, f, signal );
28 }
31 }
29− return A2( Signal.lift, f, signal );
30− }
31
32
32− return elm.Native.Random.values = {
33+ return elm.Native.Random.values = {
33− range: F3(range),
34+ range: F3(range),
34− flt: flt,
35+ float_: float_,
35− floatList: flts
36+ floatList: floatList
36− };
37+ };
37
38
38};
39};
libraries/Random.elm+1−1
@@ -20,7 +20,7 @@ range = Native.Random.range
20The new values are random numbers in [0..1).
20The new values are random numbers in [0..1).
21-}
21-}
22float : Signal a -> Signal Float
22float : Signal a -> Signal Float
23−float = Native.Random.flt
23+float = Native.Random.float_
24
24
25{-| Produces a new signal of lists that changes whenever the input signal
25{-| Produces a new signal of lists that changes whenever the input signal
26changes. The input signal specifies the length of the random list. Each value is
26changes. The input signal specifies the length of the random list. Each value is