@@ -255,19 +255,31 @@ Elm.Native.Array.make = function(elm) {
255255 }
256256
257257 function foldl(f, b, a) {
258− for (var i = 0; i < a.table.length; i++) {
259− b = A2(f, a.height == 0 ? a.table[i] : foldl(f, b, a.table[i]), b);
258+ if (a.height == 0) {
259+ for (var i = 0; i < a.table.length; i++) {
260+ b = A2(f, a.table[i], b);
261+ }
262+ } else {
263+ for (var i = 0; i < a.table.length; i++) {
264+ b = foldl(f, b, a.table[i]);
265+ }
260266 }
261267 return b;
262268 }
263269
264270 function foldr(f, b, a) {
265− for (var i = a.table.length; i--; ) {
266− b = A2(f, a.height == 0 ? a.table[i] : foldr(f, b, a.table[i]), b);
271+ if (a.height == 0) {
272+ for (var i = a.table.length; i--; ) {
273+ b = A2(f, a.table[i], b);
274+ }
275+ } else {
276+ for (var i = a.table.length; i--; ) {
277+ b = foldl(f, b, a.table[i]);
278+ }
267279 }
268280 return b;
269281 }
270−
282+
271283 // TODO: currently, it slices the right, then the left. This can be
272284 // optimized.
273285 function slice(from, to, a) {