on master help sign in
Use faster loop for `floatList` and adjust indentation
commitf43af4bbd13de38c3326808cb15d45dc725b9f31 authorEvan Czaplicki <info@elm-lang.org> dateThu 17 Oct 2013, 11:50 (13 years ago) parentffeec1a
2 files changed+29−28
libraries/Native/Signal/Random.js+28−27 libraries/Random.elm+1−1
libraries/Native/Signal/Random.js+28−27
@@ -1,38 +1,39 @@
11Elm.Native.Random = {};
22Elm.Native.Random.make = function(elm) {
33
4− elm.Native = elm.Native || {};
5− elm.Native.Random = elm.Native.Random || {};
6− if (elm.Native.Random.values) return elm.Native.Random.values;
4+ elm.Native = elm.Native || {};
5+ elm.Native.Random = elm.Native.Random || {};
6+ if (elm.Native.Random.values) return elm.Native.Random.values;
77
8− var Signal = Elm.Signal.make(elm);
9− var List = Elm.Native.List.make(elm);
8+ var Signal = Elm.Signal.make(elm);
9+ var List = Elm.Native.List.make(elm);
1010
11− function range(min, max, signal) {
12− function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; }
13− return A2( Signal.lift, f, signal );
14− }
11+ function range(min, max, signal) {
12+ function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; }
13+ return A2( Signal.lift, f, signal );
14+ }
1515
16− function flt(signal) {
17− function f(x) { return Math.random(); }
18− return A2( Signal.lift, f, signal );
19− }
16+ function float_(signal) {
17+ function f(x) { return Math.random(); }
18+ return A2( Signal.lift, f, signal );
19+ }
2020
21− function flts(signal) {
22− function f(x) {
23− var arr = new Array(Math.max(0,x));
24− for (var i = 0; i < x; i++) {
25− arr[i] = Math.random();
26− }
27− return List.fromArray(arr);
21+ function floatList(signal) {
22+ function f(n) {
23+ if (n < 0) return List.Nil;
24+ var arr = new Array(n);
25+ for (var i = n; i--; ) {
26+ arr[i] = Math.random();
27+ }
28+ return List.fromArray(arr);
29+ }
30+ return A2( Signal.lift, f, signal );
2831 }
29− return A2( Signal.lift, f, signal );
30− }
3132
32− return elm.Native.Random.values = {
33− range: F3(range),
34− flt: flt,
35− floatList: flts
36− };
33+ return elm.Native.Random.values = {
34+ range: F3(range),
35+ float_: float_,
36+ floatList: floatList
37+ };
3738
3839};
libraries/Random.elm+1−1
@@ -20,7 +20,7 @@ range = Native.Random.range
2020The new values are random numbers in [0..1).
2121-}
2222float : Signal a -> Signal Float
23−float = Native.Random.flt
23+float = Native.Random.float_
2424
2525{-| Produces a new signal of lists that changes whenever the input signal
2626changes. The input signal specifies the length of the random list. Each value is